mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-10-04 22:10:14 +00:00
rocmPackages: fixup for 5.7.0
rocmPackages.rocprim: fixup for 5.7.0 rocmPackages.rocsparse: fixup for 5.7.0 rocmPackages.rocthrust: fixup for 5.7.0 rocmPackages.rocrand: fixup for 5.7.0 rocmPackages.rocfft: fixup for 5.7.0 rocmPackages.rccl: fixup for 5.7.0 rocmPackages.hipcub: fixup for 5.7.0 rocmPackages.hipsparse: fixup for 5.7.0 rocmPackages.hipfort: fixup for 5.7.0 rocmPackages.hipfft: fixup for 5.7.0 rocmPackages.tensile: fixup for 5.7.0 rocmPackages.rocblas: fixup for 5.7.0 rocmPackages.rocsolver: fixup for 5.7.0 rocmPackages.rocwmma: fixup for 5.7.0 rocmPackages.rocalution: fixup for 5.7.0 rocmPackages.rocmlir: fixup for 5.7.0 rocmPackages.hipsolver: fixup for 5.7.0 rocmPackages.hipblas: fixup for 5.7.0 rocmPackages.miopengemm: fixup for 5.7.0 rocmPackages.miopen: fixup for 5.7.0 rocmPackages.migraphx: fixup for 5.7.0
This commit is contained in:
@@ -82,6 +82,7 @@ in rec {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Replaces hip, opencl-runtime, and rocclr
|
||||
clr = callPackage ./clr {
|
||||
inherit rocmUpdateScript hip-common hipcc rocm-device-libs rocm-comgr rocm-runtime roctracer rocminfo;
|
||||
inherit (llvm) clang;
|
||||
@@ -122,70 +123,92 @@ in rec {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
## ROCmSoftwarePlatform ##
|
||||
rocprim = callPackage ./rocprim {
|
||||
inherit rocmUpdateScript rocm-cmake clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocsparse = callPackage ./rocsparse {
|
||||
inherit rocmUpdateScript rocm-cmake rocprim clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocthrust = callPackage ./rocthrust {
|
||||
inherit rocmUpdateScript rocm-cmake rocprim clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocrand = callPackage ./rocrand {
|
||||
inherit rocmUpdateScript rocm-cmake clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hiprand = rocrand; # rocrand includes hiprand
|
||||
|
||||
rocfft = callPackage ./rocfft {
|
||||
inherit rocmUpdateScript rocm-cmake rocrand rocfft clr;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
composable_kernel = callPackage ./composable_kernel {
|
||||
inherit (llvm) openmp clang-tools-extra;
|
||||
rccl = callPackage ./rccl {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-smi clr hipify;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipcub = callPackage ./hipcub {
|
||||
inherit rocmUpdateScript rocm-cmake rocprim clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipsparse = callPackage ./hipsparse {
|
||||
inherit rocmUpdateScript rocm-cmake rocsparse clr;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipfort = callPackage ./hipfort {
|
||||
inherit rocmUpdateScript rocm-cmake;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipfft = callPackage ./hipfft {
|
||||
inherit rocmUpdateScript rocm-cmake rocfft clr;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipsolver = callPackage ./hipsolver {
|
||||
tensile = python3Packages.callPackage ./tensile {
|
||||
inherit rocmUpdateScript rocminfo;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipblas = callPackage ./hipblas {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
migraphx = callPackage ./migraphx {
|
||||
inherit (llvm) clang-tools-extra openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
rocmlir = rocmlir-rock;
|
||||
};
|
||||
|
||||
rccl = callPackage ./rccl {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocalution = callPackage ./rocalution {
|
||||
rocblas = callPackage ./rocblas {
|
||||
inherit rocmUpdateScript rocm-cmake clr tensile;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocsolver = callPackage ./rocsolver {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas rocsparse clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocwmma = callPackage ./rocwmma {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-smi rocblas clr;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocalution = callPackage ./rocalution {
|
||||
inherit rocmUpdateScript rocm-cmake rocprim rocsparse rocrand rocblas clr;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocmlir = callPackage ./rocmlir {
|
||||
inherit rocmUpdateScript rocm-cmake clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
@@ -193,47 +216,32 @@ in rec {
|
||||
buildRockCompiler = true;
|
||||
};
|
||||
|
||||
rocprim = callPackage ./rocprim {
|
||||
hipsolver = callPackage ./hipsolver {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocsparse = callPackage ./rocsparse {
|
||||
hipblas = callPackage ./hipblas {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocfft = callPackage ./rocfft {
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocrand = callPackage ./rocrand {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
tensile = python3Packages.callPackage ./tensile {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocwmma = callPackage ./rocwmma {
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocblas = callPackage ./rocblas {
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
# hipBlasLt - Very broken with Tensile at the moment, only supports GFX9
|
||||
# hipTensor - Only supports GFX9
|
||||
|
||||
miopengemm = callPackage ./miopengemm {
|
||||
inherit rocmUpdateScript rocm-cmake clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocthrust = callPackage ./rocthrust {
|
||||
composable_kernel = callPackage ./composable_kernel {
|
||||
inherit (llvm) openmp clang-tools-extra;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
miopen = callPackage ./miopen {
|
||||
inherit (llvm) llvm clang-tools-extra;
|
||||
inherit rocmUpdateScript rocm-cmake rocblas clang-ocl miopengemm composable_kernel rocm-comgr clr rocm-docs-core half;
|
||||
inherit (llvm) clang-tools-extra;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
rocmlir = rocmlir-rock;
|
||||
boost = boost179.override { enableStatic = true; };
|
||||
@@ -246,4 +254,11 @@ in rec {
|
||||
miopen-opencl = miopen.override {
|
||||
useOpenCL = true;
|
||||
};
|
||||
|
||||
migraphx = callPackage ./migraphx {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopengemm miopen clr half rocm-device-libs;
|
||||
inherit (llvm) openmp clang-tools-extra;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
rocmlir = rocmlir-rock;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, gfortran
|
||||
, rocblas
|
||||
, rocsolver
|
||||
@@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
@@ -94,7 +94,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
# Fixed in develop branch by using C++17 and related refactor
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || buildTests || buildBenchmarks || buildSamples;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocprim
|
||||
, hip
|
||||
, clr
|
||||
, gtest
|
||||
, gbenchmark
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
# CUB can also be used as a backend instead of rocPRIM.
|
||||
@@ -35,7 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -48,12 +49,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DHIP_ROOT_DIR=${hip}"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
# 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TEST=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, git
|
||||
, rocfft
|
||||
, gtest
|
||||
@@ -15,6 +15,7 @@
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, buildSamples ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
# Can also use cuFFT
|
||||
@@ -41,7 +42,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
hip
|
||||
clr
|
||||
git
|
||||
cmake
|
||||
rocm-cmake
|
||||
@@ -60,14 +61,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DCMAKE_MODULE_PATH=${hip}/lib/cmake/hip"
|
||||
"-DHIP_ROOT_DIR=${hip}"
|
||||
"-DHIP_PATH=${hip}"
|
||||
"-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
"-DHIP_PATH=${clr}"
|
||||
# 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_CLIENTS_TESTS=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, gfortran
|
||||
, rocblas
|
||||
, rocsolver
|
||||
@@ -40,7 +40,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
|
||||
@@ -5,13 +5,14 @@
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocsparse
|
||||
, hip
|
||||
, clr
|
||||
, gfortran
|
||||
, git
|
||||
, gtest
|
||||
, openmp
|
||||
, buildTests ? false
|
||||
, buildSamples ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
# This can also use cuSPARSE as a backend instead of rocSPARSE
|
||||
@@ -37,7 +38,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
@@ -59,16 +60,15 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
] ++ lib.optionals (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ 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 ''
|
||||
postPatch = lib.optionalString buildTests ''
|
||||
mkdir -p matrices
|
||||
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-01}/*.mtx matrices
|
||||
@@ -116,7 +116,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
mkdir -p $sample/bin
|
||||
mv clients/staging/example_* $sample/bin
|
||||
patchelf --set-rpath $out/lib:${lib.makeLibraryPath (
|
||||
finalAttrs.buildInputs ++ [ hip gfortran.cc ])} $sample/bin/example_*
|
||||
finalAttrs.buildInputs ++ [ clr gfortran.cc ])} $sample/bin/example_*
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
|
||||
@@ -5,11 +5,12 @@
|
||||
, pkg-config
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, clang-tools-extra
|
||||
, openmp
|
||||
, rocblas
|
||||
, rocmlir
|
||||
, composable_kernel
|
||||
, miopengemm
|
||||
, miopen
|
||||
, protobuf
|
||||
@@ -19,6 +20,8 @@
|
||||
, sqlite
|
||||
, oneDNN_2
|
||||
, blaze
|
||||
, cppcheck
|
||||
, rocm-device-libs
|
||||
, texlive
|
||||
, doxygen
|
||||
, sphinx
|
||||
@@ -67,7 +70,7 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
pkg-config
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
clang-tools-extra
|
||||
python3Packages.python
|
||||
] ++ lib.optionals buildDocs [
|
||||
@@ -84,6 +87,7 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
openmp
|
||||
rocblas
|
||||
rocmlir
|
||||
composable_kernel
|
||||
miopengemm
|
||||
miopen
|
||||
protobuf
|
||||
@@ -93,18 +97,16 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
sqlite
|
||||
oneDNN_2
|
||||
blaze
|
||||
cppcheck
|
||||
python3Packages.pybind11
|
||||
python3Packages.onnx
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_POLICY_DEFAULT_CMP0079=NEW"
|
||||
# "-DCMAKE_C_COMPILER=hipcc"
|
||||
# "-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DMIGRAPHX_ENABLE_GPU=OFF" # GPU compilation is broken, don't know why
|
||||
"-DMIGRAPHX_ENABLE_GPU=ON"
|
||||
"-DMIGRAPHX_ENABLE_CPU=ON"
|
||||
"-DMIGRAPHX_ENABLE_FPGA=ON"
|
||||
"-DMIGRAPHX_ENABLE_MLIR=ON"
|
||||
"-DMIGRAPHX_ENABLE_MLIR=OFF" # LLVM or rocMLIR mismatch?
|
||||
# Manually define CMAKE_INSTALL_<DIR>
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/197838
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
@@ -113,10 +115,20 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# We need to not use hipcc and define the CXXFLAGS manually due to `undefined hidden symbol: tensorflow:: ...`
|
||||
export CXXFLAGS+="--rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode"
|
||||
patchShebangs tools
|
||||
|
||||
# `error: '__clang_hip_runtime_wrapper.h' file not found [clang-diagnostic-error]`
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "set(MIGRAPHX_TIDY_ERRORS ALL)" ""
|
||||
|
||||
# JIT library was removed from composable_kernel...
|
||||
# https://github.com/ROCmSoftwarePlatform/composable_kernel/issues/782
|
||||
substituteInPlace src/targets/gpu/CMakeLists.txt \
|
||||
--replace "CMAKE_CXX_COMPILER MATCHES \".*clang\\\+\\\+\$\"" "TRUE"
|
||||
--replace " COMPONENTS jit_library" "" \
|
||||
--replace " composable_kernel::jit_library" "" \
|
||||
--replace "if(WIN32)" "if(TRUE)"
|
||||
'' + lib.optionalString (!buildDocs) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(doc)" ""
|
||||
|
||||
@@ -1,23 +1,26 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, rocmUpdateScript
|
||||
, runCommand
|
||||
, pkg-config
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocblas
|
||||
, rocmlir
|
||||
, hip
|
||||
, clr
|
||||
, clang-tools-extra
|
||||
, clang-ocl
|
||||
, llvm
|
||||
, miopengemm
|
||||
, composable_kernel
|
||||
, frugally-deep
|
||||
, rocm-docs-core
|
||||
, half
|
||||
, boost
|
||||
, sqlite
|
||||
, bzip2
|
||||
, lbzip2
|
||||
, nlohmann_json
|
||||
, texlive
|
||||
, doxygen
|
||||
@@ -26,13 +29,48 @@
|
||||
, gtest
|
||||
, rocm-comgr
|
||||
, python3Packages
|
||||
, buildDocs ? true
|
||||
, buildDocs ? false # Needs internet because of rocm-docs-core
|
||||
, buildTests ? false
|
||||
, fetchKDBs ? true
|
||||
, useOpenCL ? false
|
||||
}:
|
||||
|
||||
let
|
||||
version = "5.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCmSoftwarePlatform";
|
||||
repo = "MIOpen";
|
||||
rev = "rocm-${version}";
|
||||
hash = "sha256-xcKmFI8HcRA9bbh6EQGElKykIQ3RJX/q5f4IxXvM1Is=";
|
||||
fetchLFS = true;
|
||||
leaveDotGit = true;
|
||||
|
||||
# If you're reading this, it's gonna take a bit of time.
|
||||
# fetchSubModules doesn't work with postFetch???
|
||||
# fetchLFS isn't actually fetching the LFS files...
|
||||
postFetch = ''
|
||||
export HOME=$(mktemp -d)
|
||||
cd $out
|
||||
|
||||
# We need more history to fetch LFS files
|
||||
git remote add origin $url
|
||||
git fetch origin
|
||||
git clean -fdx
|
||||
git checkout rocm-${version}
|
||||
|
||||
# We need to do this manually since using leaveDotGit and fetchSubmodules errors
|
||||
git submodule update --init
|
||||
|
||||
# Fetch the LFS files
|
||||
git lfs install
|
||||
git lfs fetch --all
|
||||
git lfs checkout
|
||||
|
||||
# Remove the defunct .git folder
|
||||
rm -rf .git
|
||||
'';
|
||||
};
|
||||
|
||||
latex = lib.optionalAttrs buildDocs texlive.combine {
|
||||
inherit (texlive) scheme-small
|
||||
latexmk
|
||||
@@ -47,13 +85,40 @@ let
|
||||
titlesec;
|
||||
};
|
||||
|
||||
kdbs = lib.optionalAttrs fetchKDBs import ./deps.nix {
|
||||
inherit fetchurl;
|
||||
mirror = "https://repo.radeon.com/rocm/miopen-kernel/rel-5.0";
|
||||
};
|
||||
gfx900 = runCommand "miopen-gfx900.kdb" { preferLocalBuild = true; } ''
|
||||
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx900.kdb.bz2 > $out
|
||||
'';
|
||||
|
||||
gfx906 = runCommand "miopen-gfx906.kdb" { preferLocalBuild = true; } ''
|
||||
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx906.kdb.bz2 > $out
|
||||
'';
|
||||
|
||||
gfx908 = runCommand "miopen-gfx908.kdb" { preferLocalBuild = true; } ''
|
||||
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx908.kdb.bz2 > $out
|
||||
'';
|
||||
|
||||
gfx90a = runCommand "miopen-gfx90a.kdb" { preferLocalBuild = true; } ''
|
||||
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx90a.kdb.bz2 > $out
|
||||
'';
|
||||
|
||||
gfx1030 = runCommand "miopen-gfx1030.kdb" { preferLocalBuild = true; } ''
|
||||
${lbzip2}/bin/lbzip2 -ckd ${src}/src/kernels/gfx1030.kdb.bz2 > $out
|
||||
'';
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
inherit version src;
|
||||
pname = "miopen";
|
||||
version = "5.7.0";
|
||||
|
||||
# Find zstd and add to target. Mainly for torch.
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/ROCmSoftwarePlatform/MIOpen/commit/e608b4325646afeabb5e52846997b926d2019d19.patch";
|
||||
hash = "sha256-oxa3qlIC2bzbwGxrQOZXoY/S7CpLsMrnWRB7Og0tk0M=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/ROCmSoftwarePlatform/MIOpen/commit/3413d2daaeb44b7d6eadcc03033a5954a118491e.patch";
|
||||
hash = "sha256-ST4snUcTmmSI1Ogx815KEX9GdMnmubsavDzXCGJkiKs=";
|
||||
})
|
||||
];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -63,23 +128,15 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
"test"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCmSoftwarePlatform";
|
||||
repo = "MIOpen";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-6Bz4yDbQtV8XlEpwbH0YsJFaaZqH7BOfZDL7F4JTS1Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
clang-tools-extra
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
llvm
|
||||
rocblas
|
||||
rocmlir
|
||||
clang-ocl
|
||||
@@ -90,10 +147,12 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
sqlite
|
||||
bzip2
|
||||
nlohmann_json
|
||||
frugally-deep
|
||||
] ++ lib.optionals buildDocs [
|
||||
latex
|
||||
doxygen
|
||||
sphinx
|
||||
rocm-docs-core
|
||||
python3Packages.sphinx-rtd-theme
|
||||
python3Packages.breathe
|
||||
python3Packages.myst-parser
|
||||
@@ -102,7 +161,9 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_FLAGS=-Wno-#warnings" # <half> -> <half/half.hpp>
|
||||
"-DMIOPEN_USE_MIOPENGEMM=ON"
|
||||
"-DUNZIPPER=${bzip2}/bin/bunzip2"
|
||||
# Manually define CMAKE_INSTALL_<DIR>
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/197838
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
@@ -117,58 +178,47 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TESTS=ON"
|
||||
"-DMIOPEN_TEST_ALL=ON"
|
||||
"-DMIOPEN_TEST_GFX900=ON"
|
||||
"-DMIOPEN_TEST_GFX906=ON"
|
||||
"-DMIOPEN_TEST_GFX908=ON"
|
||||
"-DMIOPEN_TEST_GFX90A=ON"
|
||||
"-DMIOPEN_TEST_GFX103X=ON"
|
||||
"-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs test src/composable_kernel fin utils install_deps.cmake
|
||||
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "enable_testing()" "" \
|
||||
--replace "unpack_db(\"\''${CMAKE_SOURCE_DIR}/src/kernels/\''${FILE_NAME}.kdb.bz2\")" "" \
|
||||
--replace "MIOPEN_HIP_COMPILER MATCHES \".*clang\\\\+\\\\+$\"" "true" \
|
||||
--replace "set(MIOPEN_TIDY_ERRORS ALL)" "" # error: missing required key 'key'
|
||||
'' + lib.optionalString buildTests ''
|
||||
|
||||
substituteInPlace test/gtest/CMakeLists.txt \
|
||||
--replace "enable_testing()" ""
|
||||
'' + lib.optionalString (!buildTests) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(test)" ""
|
||||
'' + lib.optionalString fetchKDBs ''
|
||||
ln -sf ${kdbs.gfx1030_36} src/kernels/gfx1030_36.kdb
|
||||
ln -sf ${kdbs.gfx900_56} src/kernels/gfx900_56.kdb
|
||||
ln -sf ${kdbs.gfx900_64} src/kernels/gfx900_64.kdb
|
||||
ln -sf ${kdbs.gfx906_60} src/kernels/gfx906_60.kdb
|
||||
ln -sf ${kdbs.gfx906_64} src/kernels/gfx906_64.kdb
|
||||
ln -sf ${kdbs.gfx90878} src/kernels/gfx90878.kdb
|
||||
ln -sf ${kdbs.gfx90a68} src/kernels/gfx90a68.kdb
|
||||
ln -sf ${kdbs.gfx90a6e} src/kernels/gfx90a6e.kdb
|
||||
--replace "include(googletest)" ""
|
||||
|
||||
ln -sf ${gfx900} src/kernels/gfx900.kdb
|
||||
ln -sf ${gfx906} src/kernels/gfx906.kdb
|
||||
ln -sf ${gfx908} src/kernels/gfx908.kdb
|
||||
ln -sf ${gfx90a} src/kernels/gfx90a.kdb
|
||||
ln -sf ${gfx1030} src/kernels/gfx1030.kdb
|
||||
'';
|
||||
|
||||
# Unfortunately, it seems like we have to call make on these manually
|
||||
postBuild = lib.optionalString buildDocs ''
|
||||
export HOME=$(mktemp -d)
|
||||
make -j$NIX_BUILD_CORES doc
|
||||
python -m sphinx -T -E -b html -d _build/doctrees -D language=en ../docs _build/html
|
||||
'' + lib.optionalString buildTests ''
|
||||
make -j$NIX_BUILD_CORES check
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
rm $out/bin/install_precompiled_kernels.sh
|
||||
ln -sf ${gfx900} $out/share/miopen/db/gfx900.kdb
|
||||
ln -sf ${gfx906} $out/share/miopen/db/gfx906.kdb
|
||||
ln -sf ${gfx908} $out/share/miopen/db/gfx908.kdb
|
||||
ln -sf ${gfx90a} $out/share/miopen/db/gfx90a.kdb
|
||||
ln -sf ${gfx1030} $out/share/miopen/db/gfx1030.kdb
|
||||
'' + lib.optionalString buildDocs ''
|
||||
mv ../doc/html $out/share/doc/miopen-${if useOpenCL then "opencl" else "hip"}
|
||||
mv ../doc/pdf/miopen.pdf $out/share/doc/miopen-${if useOpenCL then "opencl" else "hip"}
|
||||
'' + lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv bin/test_* $test/bin
|
||||
patchelf --set-rpath $out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++
|
||||
[ hip rocm-comgr ])} $test/bin/*
|
||||
'' + lib.optionalString fetchKDBs ''
|
||||
# Apparently gfx1030_40 wasn't generated so the developers suggest just renaming gfx1030_36 to it
|
||||
# Should be fixed in the next miopen kernel generation batch
|
||||
ln -s ${kdbs.gfx1030_36} $out/share/miopen/db/gfx1030_40.kdb
|
||||
[ clr rocm-comgr ])} $test/bin/*
|
||||
'';
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
45
pkgs/development/rocm-modules/5/miopen/deps.nix
generated
45
pkgs/development/rocm-modules/5/miopen/deps.nix
generated
@@ -1,45 +0,0 @@
|
||||
{ fetchurl
|
||||
, mirror
|
||||
}:
|
||||
|
||||
{
|
||||
gfx1030_36 = fetchurl {
|
||||
sha256 = "sha256-zEXDLkRWAHS15LDA5IRyqG5rO7HHPBiVgPlQ8JjSqNc=";
|
||||
url = "${mirror}/gfx1030_36.kdb";
|
||||
};
|
||||
|
||||
gfx900_56 = fetchurl {
|
||||
sha256 = "sha256-ZTqUPhVKcQzjO6bxykvZMJk1VZh31dRVs+XqcxEtmeI=";
|
||||
url = "${mirror}/gfx900_56.kdb";
|
||||
};
|
||||
|
||||
gfx900_64 = fetchurl {
|
||||
sha256 = "sha256-ZTqUPhVKcQzjO6bxykvZMJk1VZh31dRVs+XqcxEtmeI=";
|
||||
url = "${mirror}/gfx900_64.kdb";
|
||||
};
|
||||
|
||||
gfx906_60 = fetchurl {
|
||||
sha256 = "sha256-U6pDo8ICfs6fVIEqRziWeE5/4Vzvu41JkcRVn3ou1e4=";
|
||||
url = "${mirror}/gfx906_60.kdb";
|
||||
};
|
||||
|
||||
gfx906_64 = fetchurl {
|
||||
sha256 = "sha256-U6pDo8ICfs6fVIEqRziWeE5/4Vzvu41JkcRVn3ou1e4=";
|
||||
url = "${mirror}/gfx906_64.kdb";
|
||||
};
|
||||
|
||||
gfx90878 = fetchurl {
|
||||
sha256 = "sha256-r7DRhNH+jHUXAu64b9vWsZzGD4w5oSHnxH0l2RN0qlQ=";
|
||||
url = "${mirror}/gfx90878.kdb";
|
||||
};
|
||||
|
||||
gfx90a68 = fetchurl {
|
||||
sha256 = "sha256-NT//zIPTbzsPJyaVycxwU6BcMTzGc/d+Z4Ab9FImDko=";
|
||||
url = "${mirror}/gfx90a68.kdb";
|
||||
};
|
||||
|
||||
gfx90a6e = fetchurl {
|
||||
sha256 = "sha256-ENZHbf+/MGYgSTpALKh2meuZPNhH5bG+WrW/jzvGpBs=";
|
||||
url = "${mirror}/gfx90a6e.kdb";
|
||||
};
|
||||
}
|
||||
@@ -4,7 +4,8 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-opencl-runtime
|
||||
, clr
|
||||
, clblast
|
||||
, texlive
|
||||
, doxygen
|
||||
, sphinx
|
||||
@@ -53,11 +54,10 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocm-opencl-runtime
|
||||
] ++ lib.optionals buildDocs [
|
||||
buildInputs = lib.optionals buildDocs [
|
||||
latex
|
||||
doxygen
|
||||
sphinx
|
||||
@@ -65,6 +65,9 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
python3Packages.breathe
|
||||
] ++ lib.optionals buildTests [
|
||||
openblas
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
clblast
|
||||
python3Packages.openai-triton
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
@@ -77,10 +80,8 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
"-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"
|
||||
"-DAPI_BENCH_CLBLAST=ON"
|
||||
"-DAPI_BENCH_ISAAC=ON"
|
||||
];
|
||||
|
||||
# Unfortunately, it seems like we have to call make on these manually
|
||||
@@ -118,6 +119,8 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version;
|
||||
# They are not making tags or releases, this may break other derivations in the future
|
||||
# Use version major instead of minor, 6.0 will HOPEFULLY have a release or tag
|
||||
broken = versions.major finalAttrs.version != versions.major stdenv.cc.version;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -5,10 +5,13 @@
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-smi
|
||||
, hip
|
||||
, clr
|
||||
, perl
|
||||
, hipify
|
||||
, gtest
|
||||
, chrpath
|
||||
, buildTests ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -31,7 +34,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
perl
|
||||
hipify
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -42,22 +47,25 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DBUILD_BFD=OFF" # Can't get it to detect bfd.h
|
||||
# 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TESTS=ON"
|
||||
];
|
||||
|
||||
# Replace the manually set parallel jobs to NIX_BUILD_CORES
|
||||
postPatch = ''
|
||||
patchShebangs src tools
|
||||
|
||||
# Really strange behavior, `#!/usr/bin/env perl` should work...
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "8 P" "$NIX_BUILD_CORES P" \
|
||||
--replace "8)" "$NIX_BUILD_CORES)"
|
||||
--replace "\''$ \''${hipify-perl_executable}" "${perl}/bin/perl ${hipify}/bin/hipify-perl"
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
, rocsparse
|
||||
, rocprim
|
||||
, rocrand
|
||||
, hip
|
||||
, clr
|
||||
, git
|
||||
, openmp
|
||||
, openmpi
|
||||
@@ -43,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
git
|
||||
];
|
||||
|
||||
@@ -60,8 +60,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DROCM_PATH=${hip}"
|
||||
"-DHIP_ROOT_DIR=${hip}"
|
||||
"-DROCM_PATH=${clr}"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
"-DSUPPORT_HIP=ON"
|
||||
"-DSUPPORT_OMP=ON"
|
||||
"-DSUPPORT_MPI=ON"
|
||||
@@ -92,7 +92,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
rm $sample/bin/rocalution-bench || true
|
||||
|
||||
patchelf --set-rpath \
|
||||
$out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++ [ hip ])} \
|
||||
$out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++ [ clr ])} \
|
||||
$sample/bin/*
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rmdir $out/bin
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, python3
|
||||
, tensile
|
||||
, msgpack
|
||||
@@ -18,13 +18,14 @@
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, tensileLogic ? "asm_full"
|
||||
, tensileCOVersion ? "V3"
|
||||
, tensileCOVersion ? "default"
|
||||
, tensileSepArch ? true
|
||||
, tensileLazyLib ? true
|
||||
, tensileLibFormat ? "msgpack"
|
||||
, gpuTargets ? [ "all" ]
|
||||
}:
|
||||
|
||||
# rocBLAS is 3.7GB... I'll have to figure out hydra in another PR
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocblas";
|
||||
version = "5.7.0";
|
||||
@@ -47,7 +48,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -56,6 +57,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
msgpack
|
||||
libxml2
|
||||
python3Packages.msgpack
|
||||
python3Packages.joblib
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, hip
|
||||
, clr
|
||||
, python3
|
||||
, rocm-cmake
|
||||
, sqlite
|
||||
@@ -14,73 +14,9 @@
|
||||
, gtest
|
||||
, openmp
|
||||
, rocrand
|
||||
# NOTE: Update the default GPU targets on every update
|
||||
, gpuTargets ? [
|
||||
"gfx803"
|
||||
"gfx900"
|
||||
"gfx906"
|
||||
"gfx908"
|
||||
"gfx90a"
|
||||
"gfx1030"
|
||||
"gfx1100"
|
||||
"gfx1102"
|
||||
]
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
let
|
||||
# To avoid output limit exceeded errors in hydra, we build kernel
|
||||
# device libs and the kernel RTC cache database in separate derivations
|
||||
kernelDeviceLibs = map
|
||||
(target:
|
||||
(rocfft.overrideAttrs (prevAttrs: {
|
||||
pname = "rocfft-device-${target}";
|
||||
|
||||
patches = prevAttrs.patches ++ [
|
||||
# Add back install rule for device library
|
||||
# This workaround is needed because rocm_install_targets
|
||||
# doesn't support an EXCLUDE_FROM_ALL option
|
||||
./device-install.patch
|
||||
];
|
||||
|
||||
buildFlags = [ "rocfft-device-${target}" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cmake --install . --component device
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
})).override {
|
||||
gpuTargets = [ target ];
|
||||
}
|
||||
)
|
||||
gpuTargets;
|
||||
|
||||
# TODO: Figure out how to also split this by GPU target
|
||||
#
|
||||
# It'll be bit more complicated than what we're doing for the kernel
|
||||
# device libs, because the kernel cache needs to be compiled into
|
||||
# one sqlite database (whereas the device libs can be linked into
|
||||
# rocfft as separate libraries for each GPU target).
|
||||
#
|
||||
# It's not clear why this needs to even be a db in the first place.
|
||||
# It would simplify things A LOT if we could just store these
|
||||
# pre-compiled kernels as files (but that'd need a lot of patching).
|
||||
kernelRtcCache = rocfft.overrideAttrs (_: {
|
||||
pname = "rocfft-kernel-cache";
|
||||
|
||||
buildFlags = [ "rocfft_kernel_cache_target" ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
cmake --install . --component kernel_cache
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
});
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocfft";
|
||||
version = "5.7.0";
|
||||
@@ -92,40 +28,28 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-GZSi03geTT+NUztBWhGYyghLqJGsFjUQzVAKQ7d03uA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Exclude kernel compilation & installation from "all" target,
|
||||
# and split device libraries by GPU target
|
||||
./split-kernel-compilation.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
hip
|
||||
clr
|
||||
python3
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
sqlite
|
||||
] ++ lib.optionals (finalAttrs.pname == "rocfft") kernelDeviceLibs;
|
||||
buildInputs = [ sqlite ];
|
||||
|
||||
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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString (finalAttrs.pname == "rocfft") ''
|
||||
ln -s ${kernelRtcCache}/lib/rocfft_kernel_cache.db "$out/lib"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
test = stdenv.mkDerivation {
|
||||
pname = "${finalAttrs.pname}-test";
|
||||
@@ -135,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
hip
|
||||
clr
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
@@ -168,7 +92,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
hip
|
||||
clr
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
@@ -201,7 +125,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
hip
|
||||
clr
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
@@ -232,6 +156,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
};
|
||||
};
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "FFT implementation for ROCm";
|
||||
homepage = "https://github.com/ROCmSoftwarePlatform/rocFFT";
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
diff --git a/library/src/device/CMakeLists.txt b/library/src/device/CMakeLists.txt
|
||||
index 73a8ec9..9bfd4b8 100644
|
||||
--- a/library/src/device/CMakeLists.txt
|
||||
+++ b/library/src/device/CMakeLists.txt
|
||||
@@ -255,4 +255,10 @@ foreach( sub ${AMDGPU_TARGETS} )
|
||||
if( NOT BUILD_SHARED_LIBS )
|
||||
set_target_properties( rocfft-device-${sub} PROPERTIES PREFIX "lib" )
|
||||
endif( )
|
||||
+
|
||||
+ rocm_install_targets(
|
||||
+ TARGETS
|
||||
+ rocfft-device-${sub}
|
||||
+ COMPONENT device
|
||||
+ )
|
||||
endforeach()
|
||||
@@ -1,124 +0,0 @@
|
||||
diff --git a/library/src/CMakeLists.txt b/library/src/CMakeLists.txt
|
||||
index 3a16304..606b711 100644
|
||||
--- a/library/src/CMakeLists.txt
|
||||
+++ b/library/src/CMakeLists.txt
|
||||
@@ -250,12 +250,12 @@ foreach( target
|
||||
|
||||
endforeach()
|
||||
|
||||
-add_executable( rocfft_aot_helper
|
||||
+add_executable( rocfft_aot_helper EXCLUDE_FROM_ALL
|
||||
rocfft_aot_helper.cpp
|
||||
rocfft_stub.cpp
|
||||
)
|
||||
|
||||
-add_executable( rocfft_config_search
|
||||
+add_executable( rocfft_config_search EXCLUDE_FROM_ALL
|
||||
rocfft_config_search.cpp
|
||||
rocfft_stub.cpp
|
||||
)
|
||||
@@ -279,10 +279,10 @@ endif()
|
||||
|
||||
target_link_libraries( rocfft PRIVATE ${ROCFFT_DEVICE_LINK_LIBS} )
|
||||
|
||||
-target_link_libraries( rocfft PRIVATE rocfft-device-0 )
|
||||
-target_link_libraries( rocfft PRIVATE rocfft-device-1 )
|
||||
-target_link_libraries( rocfft PRIVATE rocfft-device-2 )
|
||||
-target_link_libraries( rocfft PRIVATE rocfft-device-3 )
|
||||
+foreach( sub ${AMDGPU_TARGETS} )
|
||||
+ target_link_libraries( rocfft PRIVATE -lrocfft-device-${sub} )
|
||||
+endforeach()
|
||||
+
|
||||
foreach( target rocfft rocfft_aot_helper rocfft_config_search )
|
||||
# RTC uses dladdr to find the RTC helper program
|
||||
if( NOT WIN32 )
|
||||
@@ -347,7 +347,7 @@ add_custom_command(
|
||||
DEPENDS rocfft_aot_helper rocfft_rtc_helper
|
||||
COMMENT "Compile kernels into shipped cache file"
|
||||
)
|
||||
-add_custom_target( rocfft_kernel_cache_target ALL
|
||||
+add_custom_target( rocfft_kernel_cache_target
|
||||
DEPENDS rocfft_kernel_cache.db
|
||||
VERBATIM
|
||||
)
|
||||
@@ -392,7 +392,8 @@ else()
|
||||
endif()
|
||||
rocm_install(FILES ${ROCFFT_KERNEL_CACHE_PATH}
|
||||
DESTINATION "${ROCFFT_KERNEL_CACHE_INSTALL_DIR}"
|
||||
- COMPONENT runtime
|
||||
+ COMPONENT kernel_cache
|
||||
+ EXCLUDE_FROM_ALL
|
||||
)
|
||||
|
||||
# PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_READ WORLD_EXECUTE WORLD_READ
|
||||
diff --git a/library/src/device/CMakeLists.txt b/library/src/device/CMakeLists.txt
|
||||
index 9f7b85f..73a8ec9 100644
|
||||
--- a/library/src/device/CMakeLists.txt
|
||||
+++ b/library/src/device/CMakeLists.txt
|
||||
@@ -170,11 +170,11 @@ list( SORT rocfft_device_source )
|
||||
# functions callable by rocFFT and depends on amdhip64, and another
|
||||
# one usable by AOT RTC that contains no device code
|
||||
list( FILTER rocfft_device_source EXCLUDE REGEX function_pool.cpp )
|
||||
-add_library( rocfft-function-pool OBJECT
|
||||
+add_library( rocfft-function-pool OBJECT EXCLUDE_FROM_ALL
|
||||
function_pool.cpp
|
||||
)
|
||||
target_compile_definitions( rocfft-function-pool PRIVATE FUNCTION_POOL_STANDALONE_BODY= )
|
||||
-add_library( rocfft-function-pool-standalone OBJECT
|
||||
+add_library( rocfft-function-pool-standalone OBJECT EXCLUDE_FROM_ALL
|
||||
function_pool.cpp
|
||||
)
|
||||
target_compile_definitions( rocfft-function-pool-standalone PRIVATE FUNCTION_POOL_STANDALONE_BODY={} )
|
||||
@@ -193,26 +193,15 @@ foreach( pool rocfft-function-pool rocfft-function-pool-standalone )
|
||||
add_dependencies(${pool} gen_headers_target)
|
||||
endforeach()
|
||||
|
||||
-list( LENGTH rocfft_device_source rocfft_device_source_len )
|
||||
-math(EXPR split_len "${rocfft_device_source_len} / 4")
|
||||
-math(EXPR split_idx_2 "${rocfft_device_source_len} / 4 * 2")
|
||||
-math(EXPR split_idx_3 "${rocfft_device_source_len} / 4 * 3")
|
||||
-
|
||||
-list( SUBLIST rocfft_device_source 0 ${split_len} rocfft_device_source_0 )
|
||||
-list( SUBLIST rocfft_device_source ${split_len} ${split_len} rocfft_device_source_1 )
|
||||
-list( SUBLIST rocfft_device_source ${split_idx_2} ${split_len} rocfft_device_source_2 )
|
||||
-list( SUBLIST rocfft_device_source ${split_idx_3} -1 rocfft_device_source_3 )
|
||||
-
|
||||
-foreach( sub RANGE 3 )
|
||||
- set( rocfft_device_source_var rocfft_device_source_${sub} )
|
||||
+foreach( sub ${AMDGPU_TARGETS} )
|
||||
if(NOT SINGLELIB)
|
||||
- add_library( rocfft-device-${sub}
|
||||
- ${${rocfft_device_source_var}} )
|
||||
+ add_library( rocfft-device-${sub} EXCLUDE_FROM_ALL
|
||||
+ ${rocfft_device_source} )
|
||||
else()
|
||||
# Compile the device lib as a static library, which is then linked
|
||||
# into librocfft.so Useful for testing purposes.
|
||||
- add_library( rocfft-device-${sub} STATIC
|
||||
- ${${rocfft_device_source_var}} )
|
||||
+ add_library( rocfft-device-${sub} STATIC EXCLUDE_FROM_ALL
|
||||
+ ${rocfft_device_source} )
|
||||
|
||||
# if we're building singlelib, we don't want to export any of the
|
||||
# device library symbols to the main library
|
||||
@@ -241,9 +230,7 @@ foreach( sub RANGE 3 )
|
||||
# Set AMD GPU architecture options
|
||||
|
||||
# Enable compilation of desired architectures
|
||||
- foreach( target ${AMDGPU_TARGETS} )
|
||||
- target_compile_options( rocfft-device-${sub} PRIVATE --offload-arch=${target} )
|
||||
- endforeach( )
|
||||
+ target_compile_options( rocfft-device-${sub} PRIVATE --offload-arch=${sub} )
|
||||
|
||||
target_include_directories( rocfft-device-${sub}
|
||||
PRIVATE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
|
||||
@@ -268,9 +255,4 @@ foreach( sub RANGE 3 )
|
||||
if( NOT BUILD_SHARED_LIBS )
|
||||
set_target_properties( rocfft-device-${sub} PROPERTIES PREFIX "lib" )
|
||||
endif( )
|
||||
-
|
||||
- rocm_install_targets(
|
||||
- TARGETS
|
||||
- rocfft-device-${sub}
|
||||
- )
|
||||
endforeach()
|
||||
@@ -3,28 +3,35 @@
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, ninja
|
||||
, hip
|
||||
, rocminfo
|
||||
, clr
|
||||
, git
|
||||
, libxml2
|
||||
, libedit
|
||||
, zstd
|
||||
, zlib
|
||||
, ncurses
|
||||
, python3
|
||||
, python3Packages
|
||||
, buildRockCompiler ? false
|
||||
, buildTests ? false # `argument of type 'NoneType' is not iterable`
|
||||
}:
|
||||
|
||||
# Theoretically, we could have our MLIR have an output
|
||||
# with the source and built objects so that we can just
|
||||
# use it as the external LLVM repo for this
|
||||
let
|
||||
suffix =
|
||||
if buildRockCompiler
|
||||
then "-rock"
|
||||
else "";
|
||||
|
||||
llvmNativeTarget =
|
||||
if stdenv.isx86_64 then "X86"
|
||||
else if stdenv.isAarch64 then "AArch64"
|
||||
else throw "Unsupported ROCm LLVM platform";
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocmlir";
|
||||
pname = "rocmlir${suffix}";
|
||||
version = "5.7.0";
|
||||
|
||||
outputs = [
|
||||
@@ -42,44 +49,61 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
ninja
|
||||
] ++ lib.optionals (!buildRockCompiler) [
|
||||
hip
|
||||
clr
|
||||
python3Packages.python
|
||||
python3Packages.tomli
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
git
|
||||
libxml2
|
||||
libedit
|
||||
python3
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
zstd
|
||||
zlib
|
||||
ncurses
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}"
|
||||
"-DLLVM_ENABLE_ZSTD=ON"
|
||||
"-DLLVM_ENABLE_ZLIB=ON"
|
||||
"-DLLVM_ENABLE_TERMINFO=ON"
|
||||
"-DROCM_PATH=${clr}"
|
||||
# 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 buildRockCompiler [
|
||||
"-DBUILD_FAT_LIBROCKCOMPILER=ON"
|
||||
] ++ lib.optionals (!buildRockCompiler) [
|
||||
"-DROCM_PATH=${rocminfo}"
|
||||
"-DROCM_TEST_CHIPSET=gfx000"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs mlir
|
||||
|
||||
substituteInPlace mlir/utils/performance/common/CMakeLists.txt \
|
||||
--replace "/opt/rocm" "${clr}"
|
||||
'';
|
||||
|
||||
dontBuild = true;
|
||||
doCheck = true;
|
||||
|
||||
# Certain libs aren't being generated, try enabling tests next update
|
||||
checkTarget = if buildRockCompiler
|
||||
then "librockCompiler"
|
||||
else "check-mlir-miopen-build-only";
|
||||
else if buildTests
|
||||
then "check-rocmlir"
|
||||
else "check-rocmlir-build-only";
|
||||
|
||||
postInstall = let
|
||||
libPath = lib.makeLibraryPath [ zlib ncurses hip stdenv.cc.cc ];
|
||||
libPath = lib.makeLibraryPath [ zstd zlib ncurses clr stdenv.cc.cc ];
|
||||
in lib.optionals (!buildRockCompiler) ''
|
||||
mkdir -p $external/lib
|
||||
cp -a external/llvm-project/llvm/lib/{*.a*,*.so*} $external/lib
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, gtest
|
||||
, gbenchmark
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -33,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals buildTests [
|
||||
@@ -49,6 +50,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
] ++ lib.optionals (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TEST=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
@@ -58,6 +61,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/test_* $test/bin
|
||||
mv $out/bin/rocprim $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/benchmark_* $benchmark/bin
|
||||
|
||||
@@ -4,11 +4,12 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, clr
|
||||
, gtest
|
||||
, gbenchmark
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -34,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals buildTests [
|
||||
@@ -46,12 +47,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DHIP_ROOT_DIR=${hip}"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
# 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TEST=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
|
||||
@@ -5,7 +5,8 @@
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocblas
|
||||
, hip
|
||||
, rocsparse
|
||||
, clr
|
||||
, fmt
|
||||
, gtest
|
||||
, gfortran
|
||||
@@ -37,13 +38,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocblas
|
||||
rocsparse
|
||||
fmt
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
@@ -53,6 +55,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_FLAGS=-Wno-switch" # Way too many warnings
|
||||
# Manually define CMAKE_INSTALL_<DIR>
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/197838
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocprim
|
||||
, hip
|
||||
, clr
|
||||
, gfortran
|
||||
, git
|
||||
, gtest
|
||||
@@ -14,6 +14,7 @@
|
||||
, python3Packages
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false # Seems to depend on tests
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -38,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
@@ -59,6 +60,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
] ++ lib.optionals (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
"-DBUILD_CLIENTS_TESTS=ON"
|
||||
"-DCMAKE_MATRICES_DIR=/build/source/matrices"
|
||||
|
||||
@@ -5,10 +5,11 @@
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocprim
|
||||
, hip
|
||||
, clr
|
||||
, gtest
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -34,7 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cmake
|
||||
rocm-cmake
|
||||
rocprim
|
||||
hip
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals buildTests [
|
||||
@@ -43,12 +44,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DHIP_ROOT_DIR=${hip}"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
# 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TEST=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index e1160bb..2a5462e 100644
|
||||
index 0d00883..86ce282 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -30,26 +30,6 @@ cmake_dependent_option( ROCWMMA_BUILD_VALIDATION_TESTS "Build validation tests"
|
||||
@@ -30,30 +30,6 @@ cmake_dependent_option( ROCWMMA_BUILD_VALIDATION_TESTS "Build validation tests"
|
||||
cmake_dependent_option( ROCWMMA_BUILD_BENCHMARK_TESTS "Build benchmarking tests" OFF "ROCWMMA_BUILD_TESTS" OFF )
|
||||
cmake_dependent_option( ROCWMMA_BUILD_EXTENDED_TESTS "Build extended test parameter coverage" OFF "ROCWMMA_BUILD_TESTS" OFF )
|
||||
|
||||
@@ -12,20 +12,24 @@ index e1160bb..2a5462e 100644
|
||||
-FetchContent_Declare(
|
||||
- googletest
|
||||
- GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
- GIT_TAG 609281088cfefc76f9d0ce82e1ff6c30cc3591e5
|
||||
- GIT_TAG release-1.12.1
|
||||
-)
|
||||
-FetchContent_GetProperties(googletest)
|
||||
-if(NOT googletest_POPULATED)
|
||||
-
|
||||
- # Fetch the content using default details
|
||||
- FetchContent_Populate(googletest)
|
||||
- # Save the shared libs setting, then force to static libs
|
||||
- set(BUILD_SHARED_LIBS_OLD ${BUILD_SHARED_LIBS})
|
||||
- set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "Build SHARED libraries" FORCE)
|
||||
-
|
||||
- # Add gtest targets as static libs
|
||||
- add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR})
|
||||
-
|
||||
- # Restore shared libs setting
|
||||
- set(BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS_OLD} CACHE INTERNAL "Build SHARED libraries" FORCE)
|
||||
-endif()
|
||||
|
||||
-
|
||||
set(ROCWMMA_TEST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(ROCWMMA_COMMON_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/hip_device.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/rocwmma_gtest_main.cpp)
|
||||
|
||||
@@ -4,44 +4,24 @@
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, hip
|
||||
, rocm-smi
|
||||
, clr
|
||||
, openmp
|
||||
, gtest
|
||||
, rocblas
|
||||
, texlive
|
||||
, doxygen
|
||||
, sphinx
|
||||
, python3Packages
|
||||
, buildDocs ? true
|
||||
, buildTests ? false
|
||||
, buildTests ? false # Will likely fail building because wavefront shifts are not supported for certain archs
|
||||
, buildExtendedTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, buildSamples ? false
|
||||
, gpuTargets ? [ ] # gpuTargets = [ "gfx908:xnack-" "gfx90a:xnack-" "gfx90a:xnack+" ... ]
|
||||
}:
|
||||
|
||||
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 (finalAttrs: {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocwmma";
|
||||
version = "5.7.0";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
@@ -64,28 +44,21 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
hip
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openmp
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
rocm-smi
|
||||
gtest
|
||||
rocblas
|
||||
] ++ lib.optionals buildDocs [
|
||||
latex
|
||||
doxygen
|
||||
sphinx
|
||||
python3Packages.sphinx-rtd-theme
|
||||
python3Packages.breathe
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DROCWMMA_BUILD_TESTS=${if buildTests || buildBenchmarks then "ON" else "OFF"}"
|
||||
"-DROCWMMA_BUILD_VALIDATION_TESTS=ON"
|
||||
"-DROCWMMA_BUILD_SAMPLES=${if buildSamples then "ON" else "OFF"}"
|
||||
"-DROCWMMA_VALIDATE_WITH_ROCBLAS=ON"
|
||||
# Manually define CMAKE_INSTALL_<DIR>
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/197838
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
@@ -100,21 +73,7 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
"-DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON"
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString buildDocs ''
|
||||
patchShebangs docs/*.sh
|
||||
'';
|
||||
|
||||
# Unfortunately, it seems like we have to call make on this manually
|
||||
# -DROCWMMA_BUILD_DOCS=ON is invalid, despite being on the README
|
||||
postBuild = lib.optionalString buildDocs ''
|
||||
export HOME=$(mktemp -d)
|
||||
../docs/run_doc.sh
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString buildDocs ''
|
||||
mv ../docs/source/_build/html $out/share/doc/rocwmma
|
||||
mv ../docs/source/_build/latex/rocWMMA.pdf $out/share/doc/rocwmma
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
postInstall = lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/{*_test,*-validate} $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
|
||||
@@ -3,14 +3,20 @@
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, buildPythonPackage
|
||||
, pytestCheckHook
|
||||
, setuptools
|
||||
, pyyaml
|
||||
, msgpack
|
||||
, pandas
|
||||
, joblib
|
||||
, filelock
|
||||
, rocminfo
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "tensile";
|
||||
version = "5.7.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCmSoftwarePlatform";
|
||||
@@ -19,12 +25,29 @@ buildPythonPackage rec {
|
||||
hash = "sha256-CyPGiM/53duJc/oNtOsl6JSsl9uOOYm5R7O6YXaVOm4=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
buildInputs = [ setuptools ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
pyyaml
|
||||
msgpack
|
||||
pandas
|
||||
joblib
|
||||
];
|
||||
|
||||
doCheck = false; # Too many errors, not sure how to set this up properly
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
filelock
|
||||
rocminfo
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export ROCM_PATH=${rocminfo}
|
||||
'';
|
||||
|
||||
pythonImportsCheck = [ "Tensile" ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = pname;
|
||||
owner = src.owner;
|
||||
|
||||
Reference in New Issue
Block a user