Merge pull request #198770 from Madouura/pr/aggr

Changed files
+1626 -17
pkgs
development
compilers
hip
llvm
libraries
clang-ocl
composable_kernel
hipcub
hipsparse
miopengemm
rccl
rocblas
rocclr
rocfft
rocm-comgr
rocm-device-libs
rocm-opencl-runtime
rocm-runtime
rocm-thunk
rocprim
rocsparse
rocthrust
tensile
tools
build-managers
rocm-cmake
rocminfo
tools
system
rocm-smi
top-level
+6 -5
pkgs/development/compilers/hip/default.nix
···
, numactl
, perl
, python3
+
, python3Packages
, rocclr
, rocm-comgr
, rocm-device-libs
···
let
hip = stdenv.mkDerivation rec {
pname = "hip";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "HIP";
rev = "rocm-${version}";
-
hash = "sha256-UAodlVUiTU4n/EyvTIuQekTGh4izmBjKCRXOHXVKY4M=";
+
hash = "sha256-kmRvrwnT0h2dBMI+H9d1vmeW3TmDBD+qW4YYhaMV2dE=";
};
patches = [
···
in
stdenv.mkDerivation rec {
pname = "hip";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "hipamd";
rev = "rocm-${version}";
-
hash = "sha256-gZGZiDP/HbdmzLQkG9Jq9lyMP9hoD6UzTMiX9cUmQNA=";
+
hash = "sha256-i7hT/j+V0LT6Va2XcQyyKXF1guoIyhcOHvn842wCRx4=";
};
nativeBuildInputs = [ cmake python3 makeWrapper perl ];
-
buildInputs = [ libxml2 numactl libglvnd libX11 ];
+
buildInputs = [ libxml2 numactl libglvnd libX11 python3Packages.cppheaderparser ];
propagatedBuildInputs = [
clang
llvm
+2 -2
pkgs/development/compilers/llvm/rocm/default.nix
···
{ stdenv, lib, buildPackages, fetchFromGitHub, callPackage, wrapCCWith, overrideCC }:
let
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
repo = "llvm-project";
rev = "rocm-${version}";
-
hash = "sha256-MN7W4Gl6+a1nCozdn9gMzIXOiBPquoOP87x26boeSCA=";
+
hash = "sha256-IKo7N8wWvh5PBrZ2mh1Vu5s3uUXhanqYtC4qLV/+JBs=";
};
in rec {
clang = wrapCCWith rec {
+44
pkgs/development/libraries/clang-ocl/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-device-libs
+
, clang
+
}:
+
+
stdenv.mkDerivation rec {
+
pname = "clang-ocl";
+
rocmVersion = "5.3.1";
+
version = rocmVersion;
+
+
src = fetchFromGitHub {
+
owner = "RadeonOpenCompute";
+
repo = "clang-ocl";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-uMSvcVJj+me2E+7FsXZ4l4hTcK6uKEegXpkHGcuist0=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
clang
+
];
+
+
buildInputs = [
+
rocm-device-libs
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_C_COMPILER=clang"
+
"-DCMAKE_CXX_COMPILER=clang++"
+
];
+
+
meta = with lib; {
+
description = "OpenCL compilation with clang compiler";
+
homepage = "https://github.com/RadeonOpenCompute/clang-ocl";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != clang.version;
+
};
+
}
+91
pkgs/development/libraries/composable_kernel/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, hip
+
, openmp
+
, gtest ? null
+
, buildTests ? false
+
, buildExamples ? false
+
, gpuTargets ? null # gpuTargets = [ "gfx803" "gfx900" "gfx1030" ... ]
+
}:
+
+
assert buildTests -> gtest != null;
+
+
# Several tests seem to either not compile or have a race condition
+
# Undefined reference to symbol '_ZTIN7testing4TestE'
+
# Try removing this next update
+
assert buildTests == false;
+
+
stdenv.mkDerivation rec {
+
pname = "composable_kernel";
+
version = "unstable-2022-11-02";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildTests [
+
"test"
+
] ++ lib.optionals buildExamples [
+
"example"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "composable_kernel";
+
rev = "79aa3fb1793c265c59d392e916baa851a55521c8";
+
hash = "sha256-vIfMdvRYCTqrjMGSb7gQfodzLw2wf3tGoCAa5jtfbvw=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
];
+
+
buildInputs = [
+
openmp
+
] ++ lib.optionals buildTests [
+
gtest
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_C_COMPILER=hipcc"
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
] ++ lib.optionals (gpuTargets != null) [
+
"-DGPU_TARGETS=${lib.strings.concatStringsSep ";" gpuTargets}"
+
];
+
+
# No flags to build selectively it seems...
+
postPatch = ''
+
substituteInPlace test/CMakeLists.txt \
+
--replace "include(googletest)" ""
+
+
substituteInPlace CMakeLists.txt \
+
--replace "enable_testing()" ""
+
'' + lib.optionalString (!buildTests) ''
+
substituteInPlace CMakeLists.txt \
+
--replace "add_subdirectory(test)" ""
+
'' + lib.optionalString (!buildExamples) ''
+
substituteInPlace CMakeLists.txt \
+
--replace "add_subdirectory(example)" ""
+
'';
+
+
postInstall = ''
+
mkdir -p $out/bin
+
mv bin/ckProfiler $out/bin
+
'' + lib.optionalString buildTests ''
+
mkdir -p $test/bin
+
mv bin/test_* $test/bin
+
'' + lib.optionalString buildExamples ''
+
mkdir -p $example/bin
+
mv bin/example_* $example/bin
+
'';
+
+
meta = with lib; {
+
description = "Performance portable programming model for machine learning tensor operators";
+
homepage = "https://github.com/ROCmSoftwarePlatform/composable_kernel";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
};
+
}
+89
pkgs/development/libraries/hipcub/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, rocprim
+
, hip
+
, gtest ? null
+
, gbenchmark ? null
+
, buildTests ? false
+
, buildBenchmarks ? false
+
}:
+
+
assert buildTests -> gtest != null;
+
assert buildBenchmarks -> gbenchmark != null;
+
+
# CUB can also be used as a backend instead of rocPRIM.
+
stdenv.mkDerivation rec {
+
pname = "hipcub";
+
rocmVersion = "5.3.1";
+
version = "2.12.0-${rocmVersion}";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildTests [
+
"test"
+
] ++ lib.optionals buildBenchmarks [
+
"benchmark"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "hipCUB";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-/GMZKbMD1sZQCM2FulM9jiJQ8ByYZinn0C8d/deFh0g=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
rocprim
+
] ++ lib.optionals buildTests [
+
gtest
+
] ++ lib.optionals buildBenchmarks [
+
gbenchmark
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
"-DHIP_ROOT_DIR=${hip}"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_TEST=ON"
+
] ++ lib.optionals buildBenchmarks [
+
"-DBUILD_BENCHMARK=ON"
+
];
+
+
postInstall = lib.optionalString buildTests ''
+
mkdir -p $test/bin
+
mv $out/bin/test_* $test/bin
+
'' + lib.optionalString buildBenchmarks ''
+
mkdir -p $benchmark/bin
+
mv $out/bin/benchmark_* $benchmark/bin
+
'' + lib.optionalString (buildTests || buildBenchmarks) ''
+
rmdir $out/bin
+
'';
+
+
meta = with lib; {
+
description = "Thin wrapper library on top of rocPRIM or CUB";
+
homepage = "https://github.com/ROCmSoftwarePlatform/hipCUB";
+
license = with licenses; [ bsd3 ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+132
pkgs/development/libraries/hipsparse/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, rocsparse
+
, hip
+
, gfortran
+
, git
+
, fetchzip ? null
+
, gtest ? null
+
, buildTests ? false
+
}:
+
+
assert buildTests -> fetchzip != null;
+
assert buildTests -> gtest != null;
+
+
# This can also use cuSPARSE as a backend instead of rocSPARSE
+
let
+
matrices = lib.optionalAttrs buildTests import ./deps.nix {
+
inherit fetchzip;
+
mirror1 = "https://sparse.tamu.edu/MM";
+
mirror2 = "https://www.cise.ufl.edu/research/sparse/MM";
+
};
+
in stdenv.mkDerivation rec {
+
pname = "hipsparse";
+
rocmVersion = "5.3.1";
+
version = "2.3.1-${rocmVersion}";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildTests [
+
"test"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "hipSPARSE";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-Phcihat774ZSAe1QetE/GSZzGlnCnvS9GwsHBHCaD4c=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
gfortran
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
rocsparse
+
git
+
] ++ lib.optionals buildTests [
+
gtest
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_CLIENTS_TESTS=ON"
+
];
+
+
# We have to manually generate the matrices
+
# CMAKE_MATRICES_DIR seems to be reset in clients/tests/CMakeLists.txt
+
postPatch = ''
+
substituteInPlace clients/common/utility.cpp \
+
--replace "#ifdef __cpp_lib_filesystem" " #if true"
+
'' + lib.optionalString buildTests ''
+
mkdir -p matrices
+
+
ln -s ${matrices.matrix-01}/*.mtx matrices
+
ln -s ${matrices.matrix-02}/*.mtx matrices
+
ln -s ${matrices.matrix-03}/*.mtx matrices
+
ln -s ${matrices.matrix-04}/*.mtx matrices
+
ln -s ${matrices.matrix-05}/*.mtx matrices
+
ln -s ${matrices.matrix-06}/*.mtx matrices
+
ln -s ${matrices.matrix-07}/*.mtx matrices
+
ln -s ${matrices.matrix-08}/*.mtx matrices
+
ln -s ${matrices.matrix-09}/*.mtx matrices
+
ln -s ${matrices.matrix-10}/*.mtx matrices
+
ln -s ${matrices.matrix-11}/*.mtx matrices
+
ln -s ${matrices.matrix-12}/*.mtx matrices
+
ln -s ${matrices.matrix-13}/*.mtx matrices
+
ln -s ${matrices.matrix-14}/*.mtx matrices
+
ln -s ${matrices.matrix-15}/*.mtx matrices
+
ln -s ${matrices.matrix-16}/*.mtx matrices
+
ln -s ${matrices.matrix-17}/*.mtx matrices
+
ln -s ${matrices.matrix-18}/*.mtx matrices
+
ln -s ${matrices.matrix-19}/*.mtx matrices
+
+
# Not used by the original cmake, causes an error
+
rm matrices/*_b.mtx
+
+
echo "deps/convert.cpp -> deps/mtx2csr"
+
hipcc deps/convert.cpp -O3 -o deps/mtx2csr
+
+
for mat in $(ls -1 matrices | cut -d "." -f 1); do
+
echo "mtx2csr: $mat.mtx -> $mat.bin"
+
deps/mtx2csr matrices/$mat.mtx matrices/$mat.bin
+
unlink matrices/$mat.mtx
+
done
+
+
substituteInPlace clients/tests/CMakeLists.txt \
+
--replace "\''${PROJECT_BINARY_DIR}/matrices" "/build/source/matrices"
+
'';
+
+
postInstall = lib.optionalString buildTests ''
+
mkdir -p $test/bin
+
mv $out/bin/hipsparse-test $test/bin
+
mv /build/source/matrices $test
+
rmdir $out/bin
+
'';
+
+
meta = with lib; {
+
description = "ROCm SPARSE marshalling library";
+
homepage = "https://github.com/ROCmSoftwarePlatform/hipSPARSE";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+177
pkgs/development/libraries/hipsparse/deps.nix
···
+
{ fetchzip
+
, mirror1
+
, mirror2
+
}:
+
+
{
+
matrix-01 = fetchzip {
+
sha256 = "sha256-AHur5ZIDZTFRrO2GV0ieXrffq4KUiGWiZ59pv0fUtEQ=";
+
+
urls = [
+
"${mirror1}/SNAP/amazon0312.tar.gz"
+
"${mirror2}/SNAP/amazon0312.tar.gz"
+
];
+
};
+
+
matrix-02 = fetchzip {
+
sha256 = "sha256-0rSxaN4lQcdaCLsvlgicG70FXUxXeERPiEmQ4MzbRdE=";
+
+
urls = [
+
"${mirror1}/Muite/Chebyshev4.tar.gz"
+
"${mirror2}/Muite/Chebyshev4.tar.gz"
+
];
+
};
+
+
matrix-03 = fetchzip {
+
sha256 = "sha256-hDzDWDUnHEyFedX/tMNq83ZH8uWyM4xtZYUUAD3rizo=";
+
+
urls = [
+
"${mirror1}/FEMLAB/sme3Dc.tar.gz"
+
"${mirror2}/FEMLAB/sme3Dc.tar.gz"
+
];
+
};
+
+
matrix-04 = fetchzip {
+
sha256 = "sha256-GmN2yOt/MoX01rKe05aTyB3ypUP4YbQGOITZ0BqPmC0=";
+
+
urls = [
+
"${mirror1}/Williams/webbase-1M.tar.gz"
+
"${mirror2}/Williams/webbase-1M.tar.gz"
+
];
+
};
+
+
matrix-05 = fetchzip {
+
sha256 = "sha256-gQNjfVyWzNM9RwImJGhkhahRmZz74LzDs1oijL7mI7k=";
+
+
urls = [
+
"${mirror1}/Williams/mac_econ_fwd500.tar.gz"
+
"${mirror2}/Williams/mac_econ_fwd500.tar.gz"
+
];
+
};
+
+
matrix-06 = fetchzip {
+
sha256 = "sha256-87cdZjntNcTuz5BtO59irhcuRbPllWSbhCEX3Td02qc=";
+
+
urls = [
+
"${mirror1}/Williams/mc2depi.tar.gz"
+
"${mirror2}/Williams/mc2depi.tar.gz"
+
];
+
};
+
+
matrix-07 = fetchzip {
+
sha256 = "sha256-WRamuJX3D8Tm+k0q67RjUDG3DeNAxhKiaPkk5afY5eU=";
+
+
urls = [
+
"${mirror1}/Bova/rma10.tar.gz"
+
"${mirror2}/Bova/rma10.tar.gz"
+
];
+
};
+
+
matrix-08 = fetchzip {
+
sha256 = "sha256-5dhkm293Mc3lzakKxHy5W5XIn4Rw+gihVh7gyrjEHXo=";
+
+
urls = [
+
"${mirror1}/JGD_BIBD/bibd_22_8.tar.gz"
+
"${mirror2}/JGD_BIBD/bibd_22_8.tar.gz"
+
];
+
};
+
+
matrix-09 = fetchzip {
+
sha256 = "sha256-czjLWCjXAjZCk5TGYHaEkwSAzQu3TQ3QyB6eNKR4G88=";
+
+
urls = [
+
"${mirror1}/Hamm/scircuit.tar.gz"
+
"${mirror2}/Hamm/scircuit.tar.gz"
+
];
+
};
+
+
matrix-10 = fetchzip {
+
sha256 = "sha256-bYuLnJViAIcIejAkh69/bsNAVIDU4wfTLtD+nmHd6FM=";
+
+
urls = [
+
"${mirror1}/Sandia/ASIC_320k.tar.gz"
+
"${mirror2}/Sandia/ASIC_320k.tar.gz"
+
];
+
};
+
+
matrix-11 = fetchzip {
+
sha256 = "sha256-aDwn8P1khYjo2Agbq5m9ZBInJUxf/knJNvyptt0fak0=";
+
+
urls = [
+
"${mirror1}/GHS_psdef/bmwcra_1.tar.gz"
+
"${mirror2}/GHS_psdef/bmwcra_1.tar.gz"
+
];
+
};
+
+
matrix-12 = fetchzip {
+
sha256 = "sha256-8OJqA/byhlAZd869TPUzZFdsOiwOoRGfKyhM+RMjXoY=";
+
+
urls = [
+
"${mirror1}/HB/nos1.tar.gz"
+
"${mirror2}/HB/nos1.tar.gz"
+
];
+
};
+
+
matrix-13 = fetchzip {
+
sha256 = "sha256-FS0rKqmg+uHwsM/yGfQLBdd7LH/rUrdutkNGBD/Mh1I=";
+
+
urls = [
+
"${mirror1}/HB/nos2.tar.gz"
+
"${mirror2}/HB/nos2.tar.gz"
+
];
+
};
+
+
matrix-14 = fetchzip {
+
sha256 = "sha256-DANnlrNJikrI7Pst9vRedtbuxepyHmCIu2yhltc4Qcs=";
+
+
urls = [
+
"${mirror1}/HB/nos3.tar.gz"
+
"${mirror2}/HB/nos3.tar.gz"
+
];
+
};
+
+
matrix-15 = fetchzip {
+
sha256 = "sha256-21mUgqjWGUfYgiWwSrKh9vH8Vdt3xzcefmqYNYRpxiY=";
+
+
urls = [
+
"${mirror1}/HB/nos4.tar.gz"
+
"${mirror2}/HB/nos4.tar.gz"
+
];
+
};
+
+
matrix-16 = fetchzip {
+
sha256 = "sha256-FOuXvGqBBFNkVS6cexmkluret54hCfCOdK+DOZllE4c=";
+
+
urls = [
+
"${mirror1}/HB/nos5.tar.gz"
+
"${mirror2}/HB/nos5.tar.gz"
+
];
+
};
+
+
matrix-17 = fetchzip {
+
sha256 = "sha256-+7NI1rA/qQxYPpjXKHvAaCZ+LSaAJ4xuJvMRMBEUYxg=";
+
+
urls = [
+
"${mirror1}/HB/nos6.tar.gz"
+
"${mirror2}/HB/nos6.tar.gz"
+
];
+
};
+
+
matrix-18 = fetchzip {
+
sha256 = "sha256-q3NxJjbwGGcFiQ9nhWfUKgZmdVwCfPmgQoqy0AqOsNc=";
+
+
urls = [
+
"${mirror1}/HB/nos7.tar.gz"
+
"${mirror2}/HB/nos7.tar.gz"
+
];
+
};
+
+
matrix-19 = fetchzip {
+
sha256 = "sha256-0GAN6qmVfD+tprIigzuUUUwm5KVhkN9X65wMEvFltDY=";
+
+
urls = [
+
"${mirror1}/DNVS/shipsec1.tar.gz"
+
"${mirror2}/DNVS/shipsec1.tar.gz"
+
];
+
};
+
}
+129
pkgs/development/libraries/miopengemm/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-opencl-runtime
+
, clang
+
, texlive ? null
+
, doxygen ? null
+
, sphinx ? null
+
, python3Packages ? null
+
, openblas ? null
+
, buildDocs ? false
+
, buildTests ? false
+
, buildBenchmarks ? false
+
}:
+
+
assert buildDocs -> texlive != null;
+
assert buildDocs -> doxygen != null;
+
assert buildDocs -> sphinx != null;
+
assert buildDocs -> python3Packages != null;
+
assert buildTests -> openblas != null;
+
+
let
+
latex = lib.optionalAttrs buildDocs (texlive.combine {
+
inherit (texlive) scheme-small
+
latexmk
+
tex-gyre
+
fncychap
+
wrapfig
+
capt-of
+
framed
+
needspace
+
tabulary
+
varwidth
+
titlesec;
+
});
+
in stdenv.mkDerivation rec {
+
pname = "miopengemm";
+
rocmVersion = "5.3.1";
+
version = rocmVersion;
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildDocs [
+
"docs"
+
] ++ lib.optionals buildTests [
+
"test"
+
] ++ lib.optionals buildBenchmarks [
+
"benchmark"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "MIOpenGEMM";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-AiRzOMYRA/0nbQomyq4oOEwNZdkPYWRA2W6QFlctvFc=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
clang
+
];
+
+
buildInputs = [
+
rocm-opencl-runtime
+
] ++ lib.optionals buildDocs [
+
latex
+
doxygen
+
sphinx
+
python3Packages.sphinx_rtd_theme
+
python3Packages.breathe
+
] ++ lib.optionals buildTests [
+
openblas
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_C_COMPILER=clang"
+
"-DCMAKE_CXX_COMPILER=clang++"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DOPENBLAS=ON"
+
] ++ lib.optionals buildBenchmarks [
+
"-DAPI_BENCH_MIOGEMM=ON"
+
# Needs https://github.com/CNugteren/CLBlast
+
# "-DAPI_BENCH_CLBLAST=ON"
+
# Needs https://github.com/openai/triton
+
# "-DAPI_BENCH_ISAAC=ON"
+
];
+
+
# Unfortunately, it seems like we have to call make on these manually
+
postBuild = lib.optionalString buildDocs ''
+
export HOME=$(mktemp -d)
+
make doc
+
'' + lib.optionalString buildTests ''
+
make check
+
'' + lib.optionalString buildBenchmarks ''
+
make examples
+
'';
+
+
postInstall = lib.optionalString buildTests ''
+
mkdir -p $test/bin
+
find tests -executable -type f -exec mv {} $test/bin \;
+
patchelf --set-rpath ${lib.makeLibraryPath buildInputs}:$out/lib $test/bin/*
+
'' + lib.optionalString buildBenchmarks ''
+
mkdir -p $benchmark/bin
+
find examples -executable -type f -exec mv {} $benchmark/bin \;
+
patchelf --set-rpath ${lib.makeLibraryPath buildInputs}:$out/lib $benchmark/bin/*
+
'';
+
+
postFixup = lib.optionalString buildDocs ''
+
mkdir -p $docs/share/doc/miopengemm
+
mv ../doc/html $docs/share/doc/miopengemm
+
mv ../doc/pdf/miopengemm.pdf $docs/share/doc/miopengemm
+
'';
+
+
meta = with lib; {
+
description = "OpenCL general matrix multiplication API for ROCm";
+
homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != clang.version;
+
};
+
}
+84
pkgs/development/libraries/rccl/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, rocm-smi
+
, hip
+
, gtest
+
, chrpath ? null
+
, buildTests ? false
+
}:
+
+
assert buildTests -> chrpath != null;
+
+
stdenv.mkDerivation rec {
+
pname = "rccl";
+
rocmVersion = "5.3.1";
+
version = "2.12.10-${rocmVersion}";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildTests [
+
"test"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "rccl";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-whRXGD8oINDYhFs8+hEWKWoGNqacGlyy7xi8peA8Qsk=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
rocm-smi
+
gtest
+
] ++ lib.optionals buildTests [
+
chrpath
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_C_COMPILER=hipcc"
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_TESTS=ON"
+
];
+
+
# Replace the manually set parallel jobs to NIX_BUILD_CORES
+
postPatch = ''
+
substituteInPlace CMakeLists.txt \
+
--replace "8 P" "$NIX_BUILD_CORES P" \
+
--replace "8)" "$NIX_BUILD_CORES)"
+
'';
+
+
postInstall = lib.optionalString buildTests ''
+
mkdir -p $test/bin
+
mv $out/bin/* $test/bin
+
rmdir $out/bin
+
'';
+
+
meta = with lib; {
+
description = "ROCm communication collectives library";
+
homepage = "https://github.com/ROCmSoftwarePlatform/rccl";
+
license = with licenses; [ bsd2 bsd3 ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+136
pkgs/development/libraries/rocblas/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, fetchpatch
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, hip
+
, python3
+
, tensile ? null
+
, msgpack ? null
+
, libxml2 ? null
+
, llvm ? null
+
, python3Packages ? null
+
, gtest ? null
+
, gfortran ? null
+
, buildTensile ? true
+
, buildTests ? false
+
, buildBenchmarks ? false
+
, tensileLogic ? "asm_full"
+
, tensileCOVersion ? "V3"
+
, tensileSepArch ? true
+
, tensileLazyLib ? true
+
, tensileLibFormat ? "msgpack"
+
, gpuTargets ? [ "all" ]
+
}:
+
+
assert buildTensile -> tensile != null;
+
assert buildTensile -> msgpack != null;
+
assert buildTensile -> libxml2 != null;
+
assert buildTensile -> llvm != null;
+
assert buildTensile -> python3Packages != null;
+
assert buildTests -> gtest != null;
+
assert buildTests -> gfortran != null;
+
+
# Tests and benchmarks are a can of worms that I will tackle in a different PR
+
# It involves completely rewriting the amd-blis derivation
+
assert buildTests == false;
+
assert buildBenchmarks == false;
+
+
stdenv.mkDerivation rec {
+
pname = "rocblas";
+
rocmVersion = "5.3.1";
+
version = "2.45.0-${rocmVersion}";
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "rocBLAS";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-GeeICEI1dNE6D+nUUlBtUncLkPowAa5n+bsy160EtaU=";
+
};
+
+
# We currently need this patch due to faulty toolchain includes
+
# See: https://github.com/ROCmSoftwarePlatform/rocBLAS/issues/1277
+
patches = [
+
(fetchpatch {
+
name = "only-std_norm-from-rocblas_complex.patch";
+
url = "https://github.com/ROCmSoftwarePlatform/rocBLAS/commit/44b99c6df26002139ca9ec68ee1fc8899c7b001f.patch";
+
hash = "sha256-vSZkVYY951fqfOThKFqnYBasWMblS6peEJZ6sFMCk9k=";
+
})
+
];
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
python3
+
] ++ lib.optionals buildTensile [
+
msgpack
+
libxml2
+
llvm
+
python3Packages.pyyaml
+
python3Packages.msgpack
+
] ++ lib.optionals buildTests [
+
gtest
+
gfortran
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_C_COMPILER=hipcc"
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
"-Dpython=python3"
+
"-DAMDGPU_TARGETS=${lib.strings.concatStringsSep ";" gpuTargets}"
+
"-DBUILD_WITH_TENSILE=${if buildTensile then "ON" else "OFF"}"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTensile [
+
"-DVIRTUALENV_HOME_DIR=/build/source/tensile"
+
"-DTensile_TEST_LOCAL_PATH=/build/source/tensile"
+
"-DTensile_ROOT=/build/source/tensile/lib/python${python3.pythonVersion}/site-packages/Tensile"
+
"-DTensile_LOGIC=${tensileLogic}"
+
"-DTensile_CODE_OBJECT_VERSION=${tensileCOVersion}"
+
"-DTensile_SEPARATE_ARCHITECTURES=${if tensileSepArch then "ON" else "OFF"}"
+
"-DTensile_LAZY_LIBRARY_LOADING=${if tensileLazyLib then "ON" else "OFF"}"
+
"-DTensile_LIBRARY_FORMAT=${tensileLibFormat}"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_CLIENTS_TESTS=ON"
+
] ++ lib.optionals buildBenchmarks [
+
"-DBUILD_CLIENTS_BENCHMARKS=ON"
+
];
+
+
# Tensile REALLY wants to write to the nix directory if we include it normally
+
# We need to manually fixup the path so tensile will generate .co and .dat files
+
postPatch = lib.optionalString buildTensile ''
+
export PATH=${llvm}/bin:$PATH
+
cp -a ${tensile} tensile
+
chmod +w -R tensile
+
+
# Rewrap Tensile
+
substituteInPlace tensile/bin/{.t*,.T*,*} \
+
--replace "${tensile}" "/build/source/tensile"
+
+
substituteInPlace CMakeLists.txt \
+
--replace "include(virtualenv)" "" \
+
--replace "virtualenv_install(\''${Tensile_TEST_LOCAL_PATH})" ""
+
'';
+
+
meta = with lib; {
+
description = "BLAS implementation for ROCm platform";
+
homepage = "https://github.com/ROCmSoftwarePlatform/rocBLAS";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+2 -2
pkgs/development/libraries/rocclr/default.nix
···
stdenv.mkDerivation rec {
pname = "rocclr";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "ROCclr";
rev = "rocm-${version}";
-
hash = "sha256-l14+l8FkiFmGuRZ9dyD/PEYH9nHVRRg1vMXMnVhg3K4=";
+
hash = "sha256-dmL9krI/gHGQdOZ53+bQ7WjKcmJ+fZZP0lzF8ITLT4E=";
};
patches = [
+114
pkgs/development/libraries/rocfft/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, hip
+
, sqlite
+
, python3
+
, gtest ? null
+
, boost ? null
+
, fftw ? null
+
, fftwFloat ? null
+
, llvmPackages ? null
+
, buildTests ? false
+
, buildBenchmarks ? false
+
}:
+
+
assert buildTests -> gtest != null;
+
assert buildBenchmarks -> fftw != null;
+
assert buildBenchmarks -> fftwFloat != null;
+
assert (buildTests || buildBenchmarks) -> boost != null;
+
assert (buildTests || buildBenchmarks) -> llvmPackages != null;
+
+
stdenv.mkDerivation rec {
+
pname = "rocfft";
+
rocmVersion = "5.3.1";
+
version = "1.0.18-${rocmVersion}";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildTests [
+
"test"
+
] ++ lib.optionals buildBenchmarks [
+
"benchmark"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "rocFFT";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-jb2F1fRe+YLloYJ/KtzrptUDhmdBDBtddeW/g55owKM=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
sqlite
+
python3
+
] ++ lib.optionals buildTests [
+
gtest
+
] ++ lib.optionals (buildTests || buildBenchmarks) [
+
boost
+
fftw
+
fftwFloat
+
llvmPackages.openmp
+
];
+
+
propogatedBuildInputs = lib.optionals buildTests [
+
fftw
+
fftwFloat
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_C_COMPILER=hipcc"
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
"-DUSE_HIP_CLANG=ON"
+
"-DSQLITE_USE_SYSTEM_PACKAGE=ON"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_CLIENTS_TESTS=ON"
+
] ++ lib.optionals buildBenchmarks [
+
"-DBUILD_CLIENTS_RIDER=ON"
+
"-DBUILD_CLIENTS_SAMPLES=ON"
+
];
+
+
postInstall = lib.optionalString buildTests ''
+
mkdir -p $test/{bin,lib/fftw}
+
cp -a $out/bin/* $test/bin
+
ln -s ${fftw}/lib/libfftw*.so $test/lib/fftw
+
ln -s ${fftwFloat}/lib/libfftw*.so $test/lib/fftw
+
rm -r $out/lib/fftw
+
rm $test/bin/{rocfft_rtc_helper,*-rider} || true
+
'' + lib.optionalString buildBenchmarks ''
+
mkdir -p $benchmark/bin
+
cp -a $out/bin/* $benchmark/bin
+
rm $benchmark/bin/{rocfft_rtc_helper,*-test} || true
+
'' + lib.optionalString (buildTests || buildBenchmarks ) ''
+
mv $out/bin/rocfft_rtc_helper $out
+
rm -r $out/bin/*
+
mv $out/rocfft_rtc_helper $out/bin
+
'';
+
+
meta = with lib; {
+
description = "FFT implementation for ROCm ";
+
homepage = "https://github.com/ROCmSoftwarePlatform/rocFFT";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+1 -1
pkgs/development/libraries/rocm-comgr/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-comgr";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+1 -1
pkgs/development/libraries/rocm-device-libs/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-device-libs";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+1 -1
pkgs/development/libraries/rocm-opencl-runtime/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-opencl-runtime";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+1 -1
pkgs/development/libraries/rocm-runtime/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-runtime";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+1 -1
pkgs/development/libraries/rocm-thunk/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-thunk";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+85
pkgs/development/libraries/rocprim/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, hip
+
, gtest ? null
+
, gbenchmark ? null
+
, buildTests ? false
+
, buildBenchmarks ? false
+
}:
+
+
assert buildTests -> gtest != null;
+
assert buildBenchmarks -> gbenchmark != null;
+
+
stdenv.mkDerivation rec {
+
pname = "rocprim";
+
rocmVersion = "5.3.1";
+
version = "2.11.0-${rocmVersion}";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals buildTests [
+
"test"
+
] ++ lib.optionals buildBenchmarks [
+
"benchmark"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "rocPRIM";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-aapvj9bwwlg7VJfnH1PVR8DulMcJh1xR6B4rPPGU6Q4=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
] ++ lib.optionals buildTests [
+
gtest
+
] ++ lib.optionals buildBenchmarks [
+
gbenchmark
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_TEST=ON"
+
] ++ lib.optionals buildBenchmarks [
+
"-DBUILD_BENCHMARK=ON"
+
];
+
+
postInstall = lib.optionalString buildTests ''
+
mkdir -p $test/bin
+
mv $out/bin/test_* $test/bin
+
'' + lib.optionalString buildBenchmarks ''
+
mkdir -p $benchmark/bin
+
mv $out/bin/benchmark_* $benchmark/bin
+
'' + lib.optionalString (buildTests || buildBenchmarks) ''
+
rmdir $out/bin
+
'';
+
+
meta = with lib; {
+
description = "ROCm parallel primitives";
+
homepage = "https://github.com/ROCmSoftwarePlatform/rocPRIM";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+148
pkgs/development/libraries/rocsparse/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, rocprim
+
, hip
+
, gfortran
+
, git
+
, fetchzip ? null
+
, gtest ? null
+
, boost ? null
+
, python3Packages ? null
+
, buildTests ? false
+
, buildBenchmarks ? false # Seems to depend on tests
+
}:
+
+
assert (buildTests || buildBenchmarks) -> fetchzip != null;
+
assert (buildTests || buildBenchmarks) -> gtest != null;
+
assert (buildTests || buildBenchmarks) -> boost != null;
+
assert (buildTests || buildBenchmarks) -> python3Packages != null;
+
+
let
+
matrices = lib.optionalAttrs (buildTests || buildBenchmarks) import ./deps.nix {
+
inherit fetchzip;
+
mirror1 = "https://sparse.tamu.edu/MM";
+
mirror2 = "https://www.cise.ufl.edu/research/sparse/MM";
+
};
+
in stdenv.mkDerivation rec {
+
pname = "rocsparse";
+
rocmVersion = "5.3.1";
+
version = "2.3.2-${rocmVersion}";
+
+
outputs = [
+
"out"
+
] ++ lib.optionals (buildTests || buildBenchmarks) [
+
"test"
+
] ++ lib.optionals buildBenchmarks [
+
"benchmark"
+
];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "rocSPARSE";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-1069oBrIpZ4M9CAkzoQ9a5j3WlCXErirTbgTUZuT6b0=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
hip
+
gfortran
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
rocprim
+
git
+
] ++ lib.optionals (buildTests || buildBenchmarks) [
+
gtest
+
boost
+
python3Packages.python
+
python3Packages.pyyaml
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals (buildTests || buildBenchmarks) [
+
"-DBUILD_CLIENTS_TESTS=ON"
+
"-DCMAKE_MATRICES_DIR=/build/source/matrices"
+
"-Dpython=python3"
+
] ++ lib.optionals buildBenchmarks [
+
"-DBUILD_CLIENTS_BENCHMARKS=ON"
+
];
+
+
# We have to manually generate the matrices
+
postPatch = lib.optionalString (buildTests || buildBenchmarks) ''
+
mkdir -p matrices
+
+
ln -s ${matrices.matrix-01}/*.mtx matrices
+
ln -s ${matrices.matrix-02}/*.mtx matrices
+
ln -s ${matrices.matrix-03}/*.mtx matrices
+
ln -s ${matrices.matrix-04}/*.mtx matrices
+
ln -s ${matrices.matrix-05}/*.mtx matrices
+
ln -s ${matrices.matrix-06}/*.mtx matrices
+
ln -s ${matrices.matrix-07}/*.mtx matrices
+
ln -s ${matrices.matrix-08}/*.mtx matrices
+
ln -s ${matrices.matrix-09}/*.mtx matrices
+
ln -s ${matrices.matrix-10}/*.mtx matrices
+
ln -s ${matrices.matrix-11}/*.mtx matrices
+
ln -s ${matrices.matrix-12}/*.mtx matrices
+
ln -s ${matrices.matrix-13}/*.mtx matrices
+
ln -s ${matrices.matrix-14}/*.mtx matrices
+
ln -s ${matrices.matrix-15}/*.mtx matrices
+
ln -s ${matrices.matrix-16}/*.mtx matrices
+
ln -s ${matrices.matrix-17}/*.mtx matrices
+
ln -s ${matrices.matrix-18}/*.mtx matrices
+
ln -s ${matrices.matrix-19}/*.mtx matrices
+
ln -s ${matrices.matrix-20}/*.mtx matrices
+
ln -s ${matrices.matrix-21}/*.mtx matrices
+
ln -s ${matrices.matrix-22}/*.mtx matrices
+
ln -s ${matrices.matrix-23}/*.mtx matrices
+
ln -s ${matrices.matrix-24}/*.mtx matrices
+
+
# Not used by the original cmake, causes an error
+
rm matrices/*_b.mtx
+
+
echo "deps/convert.cpp -> deps/mtx2csr"
+
hipcc deps/convert.cpp -O3 -o deps/mtx2csr
+
+
for mat in $(ls -1 matrices | cut -d "." -f 1); do
+
echo "mtx2csr: $mat.mtx -> $mat.csr"
+
deps/mtx2csr matrices/$mat.mtx matrices/$mat.csr
+
unlink matrices/$mat.mtx
+
done
+
'';
+
+
postInstall = lib.optionalString buildBenchmarks ''
+
mkdir -p $benchmark/bin
+
cp -a $out/bin/* $benchmark/bin
+
rm $benchmark/bin/rocsparse-test
+
'' + lib.optionalString (buildTests || buildBenchmarks) ''
+
mkdir -p $test/bin
+
mv $out/bin/* $test/bin
+
rm $test/bin/rocsparse-bench || true
+
mv /build/source/matrices $test
+
rmdir $out/bin
+
'';
+
+
meta = with lib; {
+
description = "ROCm SPARSE implementation";
+
homepage = "https://github.com/ROCmSoftwarePlatform/rocSPARSE";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+222
pkgs/development/libraries/rocsparse/deps.nix
···
+
{ fetchzip
+
, mirror1
+
, mirror2
+
}:
+
+
{
+
matrix-01 = fetchzip {
+
sha256 = "sha256-AHur5ZIDZTFRrO2GV0ieXrffq4KUiGWiZ59pv0fUtEQ=";
+
+
urls = [
+
"${mirror1}/SNAP/amazon0312.tar.gz"
+
"${mirror2}/SNAP/amazon0312.tar.gz"
+
];
+
};
+
+
matrix-02 = fetchzip {
+
sha256 = "sha256-0rSxaN4lQcdaCLsvlgicG70FXUxXeERPiEmQ4MzbRdE=";
+
+
urls = [
+
"${mirror1}/Muite/Chebyshev4.tar.gz"
+
"${mirror2}/Muite/Chebyshev4.tar.gz"
+
];
+
};
+
+
matrix-03 = fetchzip {
+
sha256 = "sha256-hDzDWDUnHEyFedX/tMNq83ZH8uWyM4xtZYUUAD3rizo=";
+
+
urls = [
+
"${mirror1}/FEMLAB/sme3Dc.tar.gz"
+
"${mirror2}/FEMLAB/sme3Dc.tar.gz"
+
];
+
};
+
+
matrix-04 = fetchzip {
+
sha256 = "sha256-GmN2yOt/MoX01rKe05aTyB3ypUP4YbQGOITZ0BqPmC0=";
+
+
urls = [
+
"${mirror1}/Williams/webbase-1M.tar.gz"
+
"${mirror2}/Williams/webbase-1M.tar.gz"
+
];
+
};
+
+
matrix-05 = fetchzip {
+
sha256 = "sha256-gQNjfVyWzNM9RwImJGhkhahRmZz74LzDs1oijL7mI7k=";
+
+
urls = [
+
"${mirror1}/Williams/mac_econ_fwd500.tar.gz"
+
"${mirror2}/Williams/mac_econ_fwd500.tar.gz"
+
];
+
};
+
+
matrix-06 = fetchzip {
+
sha256 = "sha256-87cdZjntNcTuz5BtO59irhcuRbPllWSbhCEX3Td02qc=";
+
+
urls = [
+
"${mirror1}/Williams/mc2depi.tar.gz"
+
"${mirror2}/Williams/mc2depi.tar.gz"
+
];
+
};
+
+
matrix-07 = fetchzip {
+
sha256 = "sha256-WRamuJX3D8Tm+k0q67RjUDG3DeNAxhKiaPkk5afY5eU=";
+
+
urls = [
+
"${mirror1}/Bova/rma10.tar.gz"
+
"${mirror2}/Bova/rma10.tar.gz"
+
];
+
};
+
+
matrix-08 = fetchzip {
+
sha256 = "sha256-5dhkm293Mc3lzakKxHy5W5XIn4Rw+gihVh7gyrjEHXo=";
+
+
urls = [
+
"${mirror1}/JGD_BIBD/bibd_22_8.tar.gz"
+
"${mirror2}/JGD_BIBD/bibd_22_8.tar.gz"
+
];
+
};
+
+
matrix-09 = fetchzip {
+
sha256 = "sha256-czjLWCjXAjZCk5TGYHaEkwSAzQu3TQ3QyB6eNKR4G88=";
+
+
urls = [
+
"${mirror1}/Hamm/scircuit.tar.gz"
+
"${mirror2}/Hamm/scircuit.tar.gz"
+
];
+
};
+
+
matrix-10 = fetchzip {
+
sha256 = "sha256-bYuLnJViAIcIejAkh69/bsNAVIDU4wfTLtD+nmHd6FM=";
+
+
urls = [
+
"${mirror1}/Sandia/ASIC_320k.tar.gz"
+
"${mirror2}/Sandia/ASIC_320k.tar.gz"
+
];
+
};
+
+
matrix-11 = fetchzip {
+
sha256 = "sha256-aDwn8P1khYjo2Agbq5m9ZBInJUxf/knJNvyptt0fak0=";
+
+
urls = [
+
"${mirror1}/GHS_psdef/bmwcra_1.tar.gz"
+
"${mirror2}/GHS_psdef/bmwcra_1.tar.gz"
+
];
+
};
+
+
matrix-12 = fetchzip {
+
sha256 = "sha256-8OJqA/byhlAZd869TPUzZFdsOiwOoRGfKyhM+RMjXoY=";
+
+
urls = [
+
"${mirror1}/HB/nos1.tar.gz"
+
"${mirror2}/HB/nos1.tar.gz"
+
];
+
};
+
+
matrix-13 = fetchzip {
+
sha256 = "sha256-FS0rKqmg+uHwsM/yGfQLBdd7LH/rUrdutkNGBD/Mh1I=";
+
+
urls = [
+
"${mirror1}/HB/nos2.tar.gz"
+
"${mirror2}/HB/nos2.tar.gz"
+
];
+
};
+
+
matrix-14 = fetchzip {
+
sha256 = "sha256-DANnlrNJikrI7Pst9vRedtbuxepyHmCIu2yhltc4Qcs=";
+
+
urls = [
+
"${mirror1}/HB/nos3.tar.gz"
+
"${mirror2}/HB/nos3.tar.gz"
+
];
+
};
+
+
matrix-15 = fetchzip {
+
sha256 = "sha256-21mUgqjWGUfYgiWwSrKh9vH8Vdt3xzcefmqYNYRpxiY=";
+
+
urls = [
+
"${mirror1}/HB/nos4.tar.gz"
+
"${mirror2}/HB/nos4.tar.gz"
+
];
+
};
+
+
matrix-16 = fetchzip {
+
sha256 = "sha256-FOuXvGqBBFNkVS6cexmkluret54hCfCOdK+DOZllE4c=";
+
+
urls = [
+
"${mirror1}/HB/nos5.tar.gz"
+
"${mirror2}/HB/nos5.tar.gz"
+
];
+
};
+
+
matrix-17 = fetchzip {
+
sha256 = "sha256-+7NI1rA/qQxYPpjXKHvAaCZ+LSaAJ4xuJvMRMBEUYxg=";
+
+
urls = [
+
"${mirror1}/HB/nos6.tar.gz"
+
"${mirror2}/HB/nos6.tar.gz"
+
];
+
};
+
+
matrix-18 = fetchzip {
+
sha256 = "sha256-q3NxJjbwGGcFiQ9nhWfUKgZmdVwCfPmgQoqy0AqOsNc=";
+
+
urls = [
+
"${mirror1}/HB/nos7.tar.gz"
+
"${mirror2}/HB/nos7.tar.gz"
+
];
+
};
+
+
matrix-19 = fetchzip {
+
sha256 = "sha256-0GAN6qmVfD+tprIigzuUUUwm5KVhkN9X65wMEvFltDY=";
+
+
urls = [
+
"${mirror1}/DNVS/shipsec1.tar.gz"
+
"${mirror2}/DNVS/shipsec1.tar.gz"
+
];
+
};
+
+
matrix-20 = fetchzip {
+
sha256 = "sha256-f28Du/Urxsiq5NkRmRO10Zz9vvGRjEchquzHzbZpZ7U=";
+
+
urls = [
+
"${mirror1}/Cote/mplate.tar.gz"
+
"${mirror2}/Cote/mplate.tar.gz"
+
];
+
};
+
+
matrix-21 = fetchzip {
+
sha256 = "sha256-O+Wy0NfCU1hVUOfNR1dJpvDHLBwwa301IRJDrQJnhak=";
+
+
urls = [
+
"${mirror1}/Bai/qc2534.tar.gz"
+
"${mirror2}/Bai/qc2534.tar.gz"
+
];
+
};
+
+
matrix-22 = fetchzip {
+
sha256 = "sha256-oxMnt8U5Cf1ILWcBdU6W9jdSMMm+U6bIVl8nm3n3+OA=";
+
+
urls = [
+
"${mirror1}/Chevron/Chevron2.tar.gz"
+
"${mirror2}/Chevron/Chevron2.tar.gz"
+
];
+
};
+
+
matrix-23 = fetchzip {
+
sha256 = "sha256-MFD9BxFI/3IS7yatW121BAI04fbqrXpgYDT5UKjeKcU=";
+
+
urls = [
+
"${mirror1}/Chevron/Chevron3.tar.gz"
+
"${mirror2}/Chevron/Chevron3.tar.gz"
+
];
+
};
+
+
matrix-24 = fetchzip {
+
sha256 = "sha256-ikS8O51pe1nt3BNyhvfvqCbVL0+bg/da9bqGqeBDkTg=";
+
+
urls = [
+
"${mirror1}/Chevron/Chevron4.tar.gz"
+
"${mirror2}/Chevron/Chevron4.tar.gz"
+
];
+
};
+
}
+91
pkgs/development/libraries/rocthrust/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, cmake
+
, rocm-cmake
+
, rocm-runtime
+
, rocm-device-libs
+
, rocm-comgr
+
, rocprim
+
, hip
+
, gtest ? null
+
, buildTests ? false
+
, buildBenchmarks ? false
+
}:
+
+
assert buildTests -> gtest != null;
+
+
# Doesn't seem to work, thousands of errors compiling with no clear fix
+
# Is this an upstream issue? We don't seem to be missing dependencies
+
assert buildTests == false;
+
assert buildBenchmarks == false;
+
+
stdenv.mkDerivation rec {
+
pname = "rocthrust";
+
rocmVersion = "5.3.1";
+
version = "2.16.0-${rocmVersion}";
+
+
# Comment out these outputs until tests/benchmarks are fixed (upstream?)
+
# outputs = [
+
# "out"
+
# ] ++ lib.optionals buildTests [
+
# "test"
+
# ] ++ lib.optionals buildBenchmarks [
+
# "benchmark"
+
# ];
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "rocThrust";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-cT0VyEVz86xR6qubAY2ncTxtCRTwXrNTWcFyf3mV+y0=";
+
};
+
+
nativeBuildInputs = [
+
cmake
+
rocm-cmake
+
rocprim
+
hip
+
];
+
+
buildInputs = [
+
rocm-runtime
+
rocm-device-libs
+
rocm-comgr
+
] ++ lib.optionals buildTests [
+
gtest
+
];
+
+
cmakeFlags = [
+
"-DCMAKE_CXX_COMPILER=hipcc"
+
"-DHIP_ROOT_DIR=${hip}"
+
# Manually define CMAKE_INSTALL_<DIR>
+
# See: https://github.com/NixOS/nixpkgs/pull/197838
+
"-DCMAKE_INSTALL_BINDIR=bin"
+
"-DCMAKE_INSTALL_LIBDIR=lib"
+
"-DCMAKE_INSTALL_INCLUDEDIR=include"
+
] ++ lib.optionals buildTests [
+
"-DBUILD_TEST=ON"
+
] ++ lib.optionals buildBenchmarks [
+
"-DBUILD_BENCHMARKS=ON"
+
];
+
+
# Comment out these outputs until tests/benchmarks are fixed (upstream?)
+
# postInstall = lib.optionalString buildTests ''
+
# mkdir -p $test/bin
+
# mv $out/bin/test_* $test/bin
+
# '' + lib.optionalString buildBenchmarks ''
+
# mkdir -p $benchmark/bin
+
# mv $out/bin/benchmark_* $benchmark/bin
+
# '' + lib.optionalString (buildTests || buildBenchmarks) ''
+
# rmdir $out/bin
+
# '';
+
+
meta = with lib; {
+
description = "ROCm parallel algorithm library";
+
homepage = "https://github.com/ROCmSoftwarePlatform/rocThrust";
+
license = with licenses; [ asl20 ];
+
maintainers = with maintainers; [ Madouura ];
+
broken = rocmVersion != hip.version;
+
};
+
}
+34
pkgs/development/libraries/tensile/default.nix
···
+
{ lib
+
, stdenv
+
, fetchFromGitHub
+
, buildPythonPackage
+
, pyyaml
+
, msgpack
+
, pandas
+
}:
+
+
buildPythonPackage rec {
+
pname = "tensile";
+
rocmVersion = "5.3.1";
+
version = "4.34.0-${rocmVersion}";
+
+
src = fetchFromGitHub {
+
owner = "ROCmSoftwarePlatform";
+
repo = "Tensile";
+
rev = "rocm-${rocmVersion}";
+
hash = "sha256-QWt/zzBrZKM8h3MTnbLX4vN3p6cCQvo67U1C2yqAQxw=";
+
};
+
+
buildInputs = [
+
pyyaml
+
msgpack
+
pandas
+
];
+
+
meta = with lib; {
+
description = "GEMMs and tensor contractions";
+
homepage = "https://github.com/ROCmSoftwarePlatform/Tensile";
+
license = with licenses; [ mit ];
+
maintainers = with maintainers; [ Madouura ];
+
};
+
}
+1 -1
pkgs/development/tools/build-managers/rocm-cmake/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-cmake";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+1 -1
pkgs/development/tools/rocminfo/default.nix
···
# compilers to determine the desired target.
, defaultTargets ? []}:
stdenv.mkDerivation rec {
-
version = "5.3.0";
+
version = "5.3.1";
pname = "rocminfo";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+1 -1
pkgs/tools/system/rocm-smi/default.nix
···
stdenv.mkDerivation rec {
pname = "rocm-smi";
-
version = "5.3.0";
+
version = "5.3.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
+32
pkgs/top-level/all-packages.nix
···
rgbds = callPackage ../development/compilers/rgbds { };
+
composable_kernel = callPackage ../development/libraries/composable_kernel {
+
inherit (llvmPackages) openmp;
+
};
+
+
clang-ocl = callPackage ../development/libraries/clang-ocl {
+
inherit (llvmPackages_rocm) clang;
+
};
+
rgxg = callPackage ../tools/text/rgxg { };
rocclr = callPackage ../development/libraries/rocclr { };
···
hip = callPackage ../development/compilers/hip {
inherit (llvmPackages_rocm) clang llvm;
+
+
hipcub = callPackage ../development/libraries/hipcub { };
+
+
hipsparse = callPackage ../development/libraries/hipsparse { };
+
+
rccl = callPackage ../development/libraries/rccl { };
rocm-cmake = callPackage ../development/tools/build-managers/rocm-cmake { };
···
rocminfo = callPackage ../development/tools/rocminfo { };
rocmlir = callPackage ../development/libraries/rocmlir { };
+
+
rocprim = callPackage ../development/libraries/rocprim { };
+
+
rocsparse = callPackage ../development/libraries/rocsparse { };
+
+
rocfft = callPackage ../development/libraries/rocfft { };
+
+
tensile = python3Packages.callPackage ../development/libraries/tensile { };
+
+
rocblas = callPackage ../development/libraries/rocblas {
+
inherit (llvmPackages_rocm) llvm;
+
};
+
+
miopengemm = callPackage ../development/libraries/miopengemm {
+
inherit (llvmPackages_rocm) clang;
+
};
+
+
rocthrust = callPackage ../development/libraries/rocthrust { };
rtags = callPackage ../development/tools/rtags {
inherit (darwin) apple_sdk;