Merge pull request #287846 from mschwaig/rocm-6.0.2
rocmPackages.* 5.7.1→ 6.0.2
This commit is contained in:
commit
b10ff2437b
|
@ -880,6 +880,7 @@ with lib.maintainers; {
|
|||
members = [
|
||||
Madouura
|
||||
Flakebi
|
||||
mschwaig
|
||||
];
|
||||
githubTeams = [
|
||||
"rocm-maintainers"
|
||||
|
|
|
@ -9,11 +9,13 @@
|
|||
, libffi
|
||||
, makeWrapper
|
||||
, config
|
||||
, rocmPackages
|
||||
, rocmPackages_5
|
||||
, rocmSupport ? config.rocmSupport
|
||||
}:
|
||||
let
|
||||
inherit (llvmPackages_15) stdenv;
|
||||
# move to newer ROCm version once supported
|
||||
rocmPackages = rocmPackages_5;
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "OpenSYCL";
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
, fetchurl
|
||||
, gfortran
|
||||
, gpuTargets ? [ ] # Non-CUDA targets, that is HIP
|
||||
, rocmPackages
|
||||
, rocmPackages_5
|
||||
, lapack
|
||||
, lib
|
||||
, libpthreadstubs
|
||||
|
@ -44,6 +44,9 @@ let
|
|||
inherit (effectiveCudaPackages) cudaAtLeast cudaFlags cudaOlder;
|
||||
inherit (cudaFlags) cudaCapabilities;
|
||||
|
||||
# move to newer ROCm version once supported
|
||||
rocmPackages = rocmPackages_5;
|
||||
|
||||
# NOTE: The lists.subtractLists function is perhaps a bit unintuitive. It subtracts the elements
|
||||
# of the first list *from* the second list. That means:
|
||||
# lists.subtractLists a b = b - a
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-device-libs
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "clang-ocl";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "clang-ocl";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-uMSvcVJj+me2E+7FsXZ4l4hTcK6uKEegXpkHGcuist0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [ rocm-device-libs ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "OpenCL compilation with clang compiler";
|
||||
homepage = "https://github.com/ROCm/clang-ocl";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,189 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, rocmUpdateScript
|
||||
, makeWrapper
|
||||
, cmake
|
||||
, perl
|
||||
, clang
|
||||
, hip-common
|
||||
, hipcc
|
||||
, rocm-device-libs
|
||||
, rocm-comgr
|
||||
, rocm-runtime
|
||||
, roctracer
|
||||
, rocminfo
|
||||
, rocm-smi
|
||||
, numactl
|
||||
, libGL
|
||||
, libxml2
|
||||
, libX11
|
||||
, python3Packages
|
||||
}:
|
||||
|
||||
let
|
||||
wrapperArgs = [
|
||||
"--prefix PATH : $out/bin"
|
||||
"--prefix LD_LIBRARY_PATH : ${rocm-runtime}"
|
||||
"--set HIP_PLATFORM amd"
|
||||
"--set HIP_PATH $out"
|
||||
"--set HIP_CLANG_PATH ${clang}/bin"
|
||||
"--set DEVICE_LIB_PATH ${rocm-device-libs}/amdgcn/bitcode"
|
||||
"--set HSA_PATH ${rocm-runtime}"
|
||||
"--set ROCM_PATH $out"
|
||||
];
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "clr";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"icd"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "clr";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-ZMpA7vCW2CcpGdBLZfPimMHcgjhN1PHuewJiYwZMgGY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
cmake
|
||||
perl
|
||||
python3Packages.python
|
||||
python3Packages.cppheaderparser
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
numactl
|
||||
libGL
|
||||
libxml2
|
||||
libX11
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
rocm-device-libs
|
||||
rocm-comgr
|
||||
rocm-runtime
|
||||
rocminfo
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_POLICY_DEFAULT_CMP0072=NEW" # Prefer newer OpenGL libraries
|
||||
"-DCLR_BUILD_HIP=ON"
|
||||
"-DCLR_BUILD_OCL=ON"
|
||||
"-DHIP_COMMON_DIR=${hip-common}"
|
||||
"-DHIPCC_BIN_DIR=${hipcc}/bin"
|
||||
"-DHIP_PLATFORM=amd"
|
||||
"-DPROF_API_HEADER_PATH=${roctracer.src}/inc/ext"
|
||||
"-DROCM_PATH=${rocminfo}"
|
||||
|
||||
# Temporarily set variables to work around upstream CMakeLists issue
|
||||
# Can be removed once https://github.com/ROCm/rocm-cmake/issues/121 is fixed
|
||||
"-DCMAKE_INSTALL_BINDIR=bin"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
];
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
name = "add-missing-operators.patch";
|
||||
url = "https://github.com/ROCm/clr/commit/86bd518981b364c138f9901b28a529899d8654f3.patch";
|
||||
hash = "sha256-lbswri+zKLxif0hPp4aeJDeVfadhWZz4z+m+G2XcCPI=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "static-functions.patch";
|
||||
url = "https://github.com/ROCm/clr/commit/77c581a3ebd47b5e2908973b70adea66891159ee.patch";
|
||||
hash = "sha256-auBedbd7rghlKav7A9V6l64J7VmtE9GizIdi5gWj+fs=";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs hipamd/*.sh
|
||||
patchShebangs hipamd/src
|
||||
|
||||
# We're not on Windows so these are never installed to hipcc...
|
||||
substituteInPlace hipamd/CMakeLists.txt \
|
||||
--replace "install(PROGRAMS \''${HIPCC_BIN_DIR}/hipcc.bat DESTINATION bin)" "" \
|
||||
--replace "install(PROGRAMS \''${HIPCC_BIN_DIR}/hipconfig.bat DESTINATION bin)" ""
|
||||
|
||||
substituteInPlace hipamd/src/hip_embed_pch.sh \
|
||||
--replace "\''$LLVM_DIR/bin/clang" "${clang}/bin/clang"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
patchShebangs $out/bin
|
||||
|
||||
# hipcc.bin and hipconfig.bin is mysteriously never installed
|
||||
cp -a ${hipcc}/bin/{hipcc.bin,hipconfig.bin} $out/bin
|
||||
|
||||
wrapProgram $out/bin/hipcc.bin ${lib.concatStringsSep " " wrapperArgs}
|
||||
wrapProgram $out/bin/hipconfig.bin ${lib.concatStringsSep " " wrapperArgs}
|
||||
wrapProgram $out/bin/hipcc.pl ${lib.concatStringsSep " " wrapperArgs}
|
||||
wrapProgram $out/bin/hipconfig.pl ${lib.concatStringsSep " " wrapperArgs}
|
||||
|
||||
# Just link rocminfo, it's easier
|
||||
ln -s ${rocminfo}/bin/* $out/bin
|
||||
|
||||
# Replace rocm-opencl-icd functionality
|
||||
mkdir -p $icd/etc/OpenCL/vendors
|
||||
echo "$out/lib/libamdocl64.so" > $icd/etc/OpenCL/vendors/amdocl64.icd
|
||||
|
||||
# add version info to output (downstream rocmPackages look for this)
|
||||
mkdir $out/.info
|
||||
echo "${finalAttrs.version}" > $out/.info/version
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
# All known and valid general GPU targets
|
||||
# We cannot use this for each ROCm library, as each defines their own supported targets
|
||||
# See: https://github.com/ROCm/ROCm/blob/77cbac4abab13046ee93d8b5bf410684caf91145/README.md#library-target-matrix
|
||||
gpuTargets = lib.forEach [
|
||||
"803"
|
||||
"900"
|
||||
"906"
|
||||
"908"
|
||||
"90a"
|
||||
"940"
|
||||
"941"
|
||||
"942"
|
||||
"1010"
|
||||
"1012"
|
||||
"1030"
|
||||
"1100"
|
||||
"1101"
|
||||
"1102"
|
||||
] (target: "gfx${target}");
|
||||
|
||||
updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
page = "tags?per_page=1";
|
||||
filter = ".[0].name | split(\"-\") | .[1]";
|
||||
};
|
||||
|
||||
impureTests = {
|
||||
rocm-smi = callPackage ./test-rocm-smi.nix {
|
||||
inherit rocm-smi;
|
||||
clr = finalAttrs.finalPackage;
|
||||
};
|
||||
opencl-example = callPackage ./test-opencl-example.nix {
|
||||
clr = finalAttrs.finalPackage;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "AMD Common Language Runtime for hipamd, opencl, and rocclr";
|
||||
homepage = "https://github.com/ROCm/clr";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,75 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, makeImpureTest
|
||||
, fetchFromGitHub
|
||||
, clr
|
||||
, cmake
|
||||
, pkg-config
|
||||
, glew
|
||||
, freeglut
|
||||
, opencl-headers
|
||||
, ocl-icd
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
examples = stdenv.mkDerivation {
|
||||
pname = "amd-app-samples";
|
||||
version = "2018-06-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "OpenCL";
|
||||
repo = "AMD_APP_samples";
|
||||
rev = "54da6ca465634e78fc51fc25edf5840467ee2411";
|
||||
hash = "sha256-qARQpUiYsamHbko/I1gPZE9pUGJ+3396Vk2n7ERSftA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
buildInputs = [ glew freeglut opencl-headers ocl-icd ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/bin
|
||||
# Example path is bin/x86_64/Release/cl/Reduction/Reduction
|
||||
cp -r bin/*/*/*/*/* $out/bin/
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
cmakeFlags = [ "-DBUILD_CPP_CL=OFF" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Samples from the AMD APP SDK (with OpenCRun support) ";
|
||||
homepage = "https://github.com/OpenCL/AMD_APP_samples";
|
||||
license = licenses.bsd2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = lib.teams.rocm.members;
|
||||
};
|
||||
};
|
||||
|
||||
in
|
||||
makeImpureTest {
|
||||
name = "opencl-example";
|
||||
testedPackage = "rocmPackages_6.clr";
|
||||
|
||||
sandboxPaths = [ "/sys" "/dev/dri" "/dev/kfd" ];
|
||||
|
||||
nativeBuildInputs = [ examples ];
|
||||
|
||||
OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors";
|
||||
|
||||
testScript = ''
|
||||
# Examples load resources from current directory
|
||||
cd ${examples}/bin
|
||||
echo OCL_ICD_VENDORS=$OCL_ICD_VENDORS
|
||||
pwd
|
||||
|
||||
HelloWorld | grep HelloWorld
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = teams.rocm.members;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,23 @@
|
|||
{ lib
|
||||
, makeImpureTest
|
||||
, clinfo
|
||||
, clr
|
||||
, rocm-smi
|
||||
}:
|
||||
|
||||
makeImpureTest {
|
||||
name = "rocm-smi";
|
||||
testedPackage = "rocmPackages_6.clr";
|
||||
nativeBuildInputs = [ clinfo rocm-smi ];
|
||||
OCL_ICD_VENDORS = "${clr.icd}/etc/OpenCL/vendors";
|
||||
|
||||
testScript = ''
|
||||
# Test fails if the number of platforms is 0
|
||||
clinfo | grep -E 'Number of platforms * [1-9]'
|
||||
rocm-smi | grep -A1 GPU
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = teams.rocm.members;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, openmp
|
||||
, clang-tools-extra
|
||||
, git
|
||||
, gtest
|
||||
, buildTests ? false
|
||||
, buildExamples ? false
|
||||
, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900" "gfx1030" ... ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "composable_kernel";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildExamples [
|
||||
"example"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "composable_kernel";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-NCqMganmNyQfz3X+KQOrfrimnrgd3HbAGK5DeC4+J+o=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
git
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
clang-tools-extra
|
||||
];
|
||||
|
||||
buildInputs = [ openmp ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
] ++ lib.optionals (gpuTargets != [ ]) [
|
||||
"-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names
|
||||
];
|
||||
|
||||
# No flags to build selectively it seems...
|
||||
postPatch = lib.optionalString (!buildTests) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(test)" ""
|
||||
'' + lib.optionalString (!buildExamples) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(example)" ""
|
||||
'' + ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(profiler)" ""
|
||||
''
|
||||
;
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/test_* $test/bin
|
||||
'' + lib.optionalString buildExamples ''
|
||||
mkdir -p $example/bin
|
||||
mv $out/bin/example_* $example/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
# Times out otherwise
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Performance portable programming model for machine learning tensor operators";
|
||||
homepage = "https://github.com/ROCm/composable_kernel";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,524 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, recurseIntoAttrs
|
||||
, symlinkJoin
|
||||
, fetchFromGitHub
|
||||
, cudaPackages
|
||||
, python3Packages
|
||||
, elfutils
|
||||
, boost179
|
||||
, opencv
|
||||
, ffmpeg_4
|
||||
, libjpeg_turbo
|
||||
, rapidjson-unstable
|
||||
}:
|
||||
|
||||
let
|
||||
rocmUpdateScript = callPackage ./update.nix { };
|
||||
in rec {
|
||||
## ROCm ##
|
||||
llvm = recurseIntoAttrs (callPackage ./llvm/default.nix { inherit rocmUpdateScript rocm-device-libs rocm-runtime rocm-thunk clr; });
|
||||
|
||||
rocm-core = callPackage ./rocm-core {
|
||||
inherit rocmUpdateScript;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocm-cmake = callPackage ./rocm-cmake {
|
||||
inherit rocmUpdateScript;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocm-thunk = callPackage ./rocm-thunk {
|
||||
inherit rocmUpdateScript;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocm-smi = python3Packages.callPackage ./rocm-smi {
|
||||
inherit rocmUpdateScript;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Eventually will be in the LLVM repo
|
||||
rocm-device-libs = callPackage ./rocm-device-libs {
|
||||
inherit rocmUpdateScript rocm-cmake;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocm-runtime = callPackage ./rocm-runtime {
|
||||
inherit rocmUpdateScript rocm-device-libs rocm-thunk;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Eventually will be in the LLVM repo
|
||||
rocm-comgr = callPackage ./rocm-comgr {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-device-libs;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocminfo = callPackage ./rocminfo {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-runtime;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
clang-ocl = callPackage ./clang-ocl {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-device-libs;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Unfree
|
||||
hsa-amd-aqlprofile-bin = callPackage ./hsa-amd-aqlprofile-bin {
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Broken, too many errors
|
||||
rdc = callPackage ./rdc {
|
||||
inherit rocmUpdateScript rocm-smi rocm-runtime stdenv;
|
||||
# stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocm-docs-core = python3Packages.callPackage ./rocm-docs-core { inherit stdenv; };
|
||||
|
||||
hip-common = callPackage ./hip-common {
|
||||
inherit rocmUpdateScript;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Eventually will be in the LLVM repo
|
||||
hipcc = callPackage ./hipcc {
|
||||
inherit rocmUpdateScript;
|
||||
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 rocm-smi;
|
||||
inherit (llvm) clang;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipify = callPackage ./hipify {
|
||||
inherit rocmUpdateScript;
|
||||
inherit (llvm) clang;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# Needs GCC
|
||||
rocprofiler = callPackage ./rocprofiler {
|
||||
inherit rocmUpdateScript clr rocm-core rocm-thunk rocm-device-libs roctracer rocdbgapi rocm-smi hsa-amd-aqlprofile-bin stdenv;
|
||||
inherit (llvm) clang;
|
||||
};
|
||||
|
||||
# Needs GCC
|
||||
roctracer = callPackage ./roctracer {
|
||||
inherit rocmUpdateScript rocm-device-libs rocm-runtime clr stdenv;
|
||||
};
|
||||
|
||||
rocgdb = callPackage ./rocgdb {
|
||||
inherit rocmUpdateScript;
|
||||
elfutils = elfutils.override { enableDebuginfod = true; };
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocdbgapi = callPackage ./rocdbgapi {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-comgr rocm-runtime;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocr-debug-agent = callPackage ./rocr-debug-agent {
|
||||
inherit rocmUpdateScript clr rocdbgapi;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
tensile = python3Packages.callPackage ./tensile {
|
||||
inherit rocmUpdateScript rocminfo;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocblas = callPackage ./rocblas {
|
||||
inherit rocblas 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 rocminfo clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rocmlir-rock = rocmlir.override {
|
||||
buildRockCompiler = true;
|
||||
};
|
||||
|
||||
hipsolver = callPackage ./hipsolver {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
hipblas = callPackage ./hipblas {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas rocsolver clr;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
# hipBlasLt - Very broken with Tensile at the moment, only supports GFX9
|
||||
# hipTensor - Only supports GFX9
|
||||
|
||||
miopengemm= throw ''
|
||||
'miopen-opencl' has been deprecated.
|
||||
It is still available for some time as part of rocmPackages_5.
|
||||
''; # Added 2024-3-3;
|
||||
|
||||
composable_kernel = callPackage ./composable_kernel {
|
||||
inherit rocmUpdateScript rocm-cmake clr;
|
||||
inherit (llvm) openmp clang-tools-extra;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
half = callPackage ./half {
|
||||
inherit rocmUpdateScript rocm-cmake;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
miopen = callPackage ./miopen {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas clang-ocl composable_kernel rocm-comgr clr rocm-docs-core half roctracer;
|
||||
inherit (llvm) clang-tools-extra;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
rocmlir = rocmlir-rock;
|
||||
boost = boost179.override { enableStatic = true; };
|
||||
};
|
||||
|
||||
miopen-hip = miopen;
|
||||
|
||||
miopen-opencl= throw ''
|
||||
'miopen-opencl' has been deprecated.
|
||||
It is still available for some time as part of rocmPackages_5.
|
||||
''; # Added 2024-3-3;
|
||||
|
||||
migraphx = callPackage ./migraphx {
|
||||
inherit rocmUpdateScript rocm-cmake rocblas composable_kernel miopen clr half rocm-device-libs;
|
||||
inherit (llvm) openmp clang-tools-extra;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
rocmlir = rocmlir-rock;
|
||||
};
|
||||
|
||||
rpp = callPackage ./rpp {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-docs-core clr half;
|
||||
inherit (llvm) openmp;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
};
|
||||
|
||||
rpp-hip = rpp.override {
|
||||
useOpenCL = false;
|
||||
useCPU = false;
|
||||
};
|
||||
|
||||
rpp-opencl = rpp.override {
|
||||
useOpenCL = true;
|
||||
useCPU = false;
|
||||
};
|
||||
|
||||
rpp-cpu = rpp.override {
|
||||
useOpenCL = false;
|
||||
useCPU = true;
|
||||
};
|
||||
|
||||
mivisionx = callPackage ./mivisionx {
|
||||
inherit rocmUpdateScript rocm-cmake rocm-device-libs clr rpp rocblas miopen migraphx half rocm-docs-core;
|
||||
inherit (llvm) clang openmp;
|
||||
opencv = opencv.override { enablePython = true; };
|
||||
ffmpeg = ffmpeg_4;
|
||||
rapidjson = rapidjson-unstable;
|
||||
stdenv = llvm.rocmClangStdenv;
|
||||
|
||||
# Unfortunately, rocAL needs a custom libjpeg-turbo until further notice
|
||||
# See: https://github.com/ROCm/MIVisionX/issues/1051
|
||||
libjpeg_turbo = libjpeg_turbo.overrideAttrs {
|
||||
version = "2.0.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rrawther";
|
||||
repo = "libjpeg-turbo";
|
||||
rev = "640d7ee1917fcd3b6a5271aa6cf4576bccc7c5fb";
|
||||
sha256 = "sha256-T52whJ7nZi8jerJaZtYInC2YDN0QM+9tUDqiNr6IsNY=";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
mivisionx-hip = mivisionx.override {
|
||||
rpp = rpp-hip;
|
||||
useOpenCL = false;
|
||||
useCPU = false;
|
||||
};
|
||||
|
||||
mivisionx-opencl = mivisionx.override {
|
||||
rpp = rpp-opencl;
|
||||
miopen = miopen-opencl;
|
||||
useOpenCL = true;
|
||||
useCPU = false;
|
||||
};
|
||||
|
||||
mivisionx-cpu = mivisionx.override {
|
||||
rpp = rpp-cpu;
|
||||
useOpenCL = false;
|
||||
useCPU = true;
|
||||
};
|
||||
|
||||
## Meta ##
|
||||
# Emulate common ROCm meta layout
|
||||
# These are mainly for users. I strongly suggest NOT using these in nixpkgs derivations
|
||||
# Don't put these into `propagatedBuildInputs` unless you want PATH/PYTHONPATH issues!
|
||||
# See: https://rocm.docs.amd.com/en/docs-5.7.1/_images/image.004.png
|
||||
# See: https://rocm.docs.amd.com/en/docs-5.7.1/deploy/linux/os-native/package_manager_integration.html
|
||||
meta = rec {
|
||||
rocm-developer-tools = symlinkJoin {
|
||||
name = "rocm-developer-tools-meta";
|
||||
|
||||
paths = [
|
||||
hsa-amd-aqlprofile-bin
|
||||
rocm-core
|
||||
rocr-debug-agent
|
||||
roctracer
|
||||
rocdbgapi
|
||||
rocprofiler
|
||||
rocgdb
|
||||
rocm-language-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-ml-sdk = symlinkJoin {
|
||||
name = "rocm-ml-sdk-meta";
|
||||
|
||||
paths = [
|
||||
rocm-core
|
||||
miopen-hip
|
||||
rocm-hip-sdk
|
||||
rocm-ml-libraries
|
||||
];
|
||||
};
|
||||
|
||||
rocm-ml-libraries = symlinkJoin {
|
||||
name = "rocm-ml-libraries-meta";
|
||||
|
||||
paths = [
|
||||
llvm.clang
|
||||
llvm.mlir
|
||||
llvm.openmp
|
||||
rocm-core
|
||||
miopen-hip
|
||||
rocm-hip-libraries
|
||||
];
|
||||
};
|
||||
|
||||
rocm-hip-sdk = symlinkJoin {
|
||||
name = "rocm-hip-sdk-meta";
|
||||
|
||||
paths = [
|
||||
rocprim
|
||||
rocalution
|
||||
hipfft
|
||||
rocm-core
|
||||
hipcub
|
||||
hipblas
|
||||
rocrand
|
||||
rocfft
|
||||
rocsparse
|
||||
rccl
|
||||
rocthrust
|
||||
rocblas
|
||||
hipsparse
|
||||
hipfort
|
||||
rocwmma
|
||||
hipsolver
|
||||
rocsolver
|
||||
rocm-hip-libraries
|
||||
rocm-hip-runtime-devel
|
||||
];
|
||||
};
|
||||
|
||||
rocm-hip-libraries = symlinkJoin {
|
||||
name = "rocm-hip-libraries-meta";
|
||||
|
||||
paths = [
|
||||
rocblas
|
||||
hipfort
|
||||
rocm-core
|
||||
rocsolver
|
||||
rocalution
|
||||
rocrand
|
||||
hipblas
|
||||
rocfft
|
||||
hipfft
|
||||
rccl
|
||||
rocsparse
|
||||
hipsparse
|
||||
hipsolver
|
||||
rocm-hip-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-openmp-sdk = symlinkJoin {
|
||||
name = "rocm-openmp-sdk-meta";
|
||||
|
||||
paths = [
|
||||
rocm-core
|
||||
llvm.clang
|
||||
llvm.mlir
|
||||
llvm.openmp # openmp-extras-devel (https://github.com/ROCm/aomp)
|
||||
rocm-language-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-opencl-sdk = symlinkJoin {
|
||||
name = "rocm-opencl-sdk-meta";
|
||||
|
||||
paths = [
|
||||
rocm-core
|
||||
rocm-runtime
|
||||
clr
|
||||
clr.icd
|
||||
rocm-thunk
|
||||
rocm-opencl-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-opencl-runtime = symlinkJoin {
|
||||
name = "rocm-opencl-runtime-meta";
|
||||
|
||||
paths = [
|
||||
rocm-core
|
||||
clr
|
||||
clr.icd
|
||||
rocm-language-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-hip-runtime-devel = symlinkJoin {
|
||||
name = "rocm-hip-runtime-devel-meta";
|
||||
|
||||
paths = [
|
||||
clr
|
||||
rocm-core
|
||||
hipify
|
||||
rocm-cmake
|
||||
llvm.clang
|
||||
llvm.mlir
|
||||
llvm.openmp
|
||||
rocm-thunk
|
||||
rocm-runtime
|
||||
rocm-hip-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-hip-runtime = symlinkJoin {
|
||||
name = "rocm-hip-runtime-meta";
|
||||
|
||||
paths = [
|
||||
rocm-core
|
||||
rocminfo
|
||||
clr
|
||||
rocm-language-runtime
|
||||
];
|
||||
};
|
||||
|
||||
rocm-language-runtime = symlinkJoin {
|
||||
name = "rocm-language-runtime-meta";
|
||||
|
||||
paths = [
|
||||
rocm-runtime
|
||||
rocm-core
|
||||
rocm-comgr
|
||||
llvm.openmp # openmp-extras-runtime (https://github.com/ROCm/aomp)
|
||||
];
|
||||
};
|
||||
|
||||
rocm-all = symlinkJoin {
|
||||
name = "rocm-all-meta";
|
||||
|
||||
paths = [
|
||||
rocm-developer-tools
|
||||
rocm-ml-sdk
|
||||
rocm-ml-libraries
|
||||
rocm-hip-sdk
|
||||
rocm-hip-libraries
|
||||
rocm-openmp-sdk
|
||||
rocm-opencl-sdk
|
||||
rocm-opencl-runtime
|
||||
rocm-hip-runtime-devel
|
||||
rocm-hip-runtime
|
||||
rocm-language-runtime
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "half";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "half";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-wvl8ny7pbY9hUGGtJ70R7/4YIsahgI7qcVzUnxmUfZM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "C++ library for half precision floating point arithmetics";
|
||||
homepage = "https://github.com/ROCm/half";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.unix;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,44 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hip-common";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "HIP";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-51u3By0R4LKoWiklNacFP6HILL845jxpN6FD7rQB+zQ=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
mv * $out
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "C++ Heterogeneous-Compute Interface for Portability";
|
||||
homepage = "https://github.com/ROCm/HIP";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,99 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, gfortran
|
||||
, rocblas
|
||||
, rocsolver
|
||||
, gtest
|
||||
, lapack-reference
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, buildSamples ? false
|
||||
}:
|
||||
|
||||
# Can also use cuBLAS
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipblas";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"sample"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "hipBLAS";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-Fq7o2sMmHlHIv9UKJw+u/h9K/ZhKVJWwosYTdYIsscA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocblas
|
||||
rocsolver
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
lapack-reference
|
||||
];
|
||||
|
||||
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_CLIENTS_TESTS=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"-DBUILD_CLIENTS_BENCHMARKS=ON"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"-DBUILD_CLIENTS_SAMPLES=ON"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/hipblas-test $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/hipblas-bench $benchmark/bin
|
||||
'' + lib.optionalString buildSamples ''
|
||||
mkdir -p $sample/bin
|
||||
mv $out/bin/example-* $sample/bin
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks || buildSamples) ''
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm BLAS marshalling library";
|
||||
homepage = "https://github.com/ROCm/hipBLAS";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,46 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, lsb-release
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipcc";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "HIPCC";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-/LRQN+RSMBPk2jS/tdp3psUL/B0RJZQhRri7e67KsG4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace src/hipBin_amd.h \
|
||||
--replace "/usr/bin/lsb_release" "${lsb-release}/bin/lsb_release"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
rm -r $out/hip/bin
|
||||
ln -s $out/bin $out/hip/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Compiler driver utility that calls clang or nvcc";
|
||||
homepage = "https://github.com/ROCm/HIPCC";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,90 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocprim
|
||||
, clr
|
||||
, gtest
|
||||
, gbenchmark
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
# CUB can also be used as a backend instead of rocPRIM.
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipcub";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "hipCUB";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-8QzVgj0JSb86zEG3sj5AAt9pG3frw+xrjEOTo7xCIrc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocprim
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
gbenchmark
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-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 [
|
||||
"-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
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Thin wrapper library on top of rocPRIM or CUB";
|
||||
homepage = "https://github.com/ROCm/hipCUB";
|
||||
license = with licenses; [ bsd3 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,110 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, git
|
||||
, rocfft
|
||||
, gtest
|
||||
, boost
|
||||
, fftw
|
||||
, fftwFloat
|
||||
, openmp
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, buildSamples ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
# Can also use cuFFT
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipfft";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"sample"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "hipFFT";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-DjjNQryJdl7RmaMQRQPWkleweEWMIwH/xXU84GGjoC0=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
clr
|
||||
git
|
||||
cmake
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocfft
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks || buildSamples) [
|
||||
gtest
|
||||
boost
|
||||
fftw
|
||||
fftwFloat
|
||||
openmp
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-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 [
|
||||
"-DBUILD_CLIENTS_RIDER=ON"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"-DBUILD_CLIENTS_SAMPLES=ON"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/hipfft-test $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/hipfft-rider $benchmark/bin
|
||||
'' + lib.optionalString buildSamples ''
|
||||
mkdir -p $sample/bin
|
||||
mv clients/staging/hipfft_* $sample/bin
|
||||
patchelf $sample/bin/hipfft_* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE"
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "FFT marshalling library";
|
||||
homepage = "https://github.com/ROCm/hipFFT";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,66 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, gfortran
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipfort";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "hipfort";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-3PIqSDyDlY0oVSEx20EPlKGYNkc9xPZtIG3Sbw69esE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
gfortran
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DHIPFORT_COMPILER=${gfortran}/bin/gfortran"
|
||||
"-DHIPFORT_AR=${gfortran.cc}/bin/gcc-ar"
|
||||
"-DHIPFORT_RANLIB=${gfortran.cc}/bin/gcc-ranlib"
|
||||
# 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"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs bin
|
||||
|
||||
substituteInPlace bin/hipfc bin/mymcpu \
|
||||
--replace "/bin/cat" "cat"
|
||||
|
||||
substituteInPlace bin/CMakeLists.txt \
|
||||
--replace "/bin/mkdir" "mkdir" \
|
||||
--replace "/bin/cp" "cp" \
|
||||
--replace "/bin/sed" "sed" \
|
||||
--replace "/bin/chmod" "chmod" \
|
||||
--replace "/bin/ln" "ln"
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Fortran interfaces for ROCm libraries";
|
||||
homepage = "https://github.com/ROCm/hipfort";
|
||||
license = with licenses; [ mit ]; # mitx11
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,47 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, clang
|
||||
, libxml2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipify";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "HIPIFY";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-nNyWrPPhUwT7FyASzc3kf5NCTzeqvHybVOc+6hBzkA4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ libxml2 ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "\''${LLVM_TOOLS_BINARY_DIR}/clang" "${clang}/bin/clang"
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
patchShebangs $out/bin
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Convert CUDA to Portable C++ Code";
|
||||
homepage = "https://github.com/ROCm/HIPIFY";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,100 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, gfortran
|
||||
, rocblas
|
||||
, rocsolver
|
||||
, gtest
|
||||
, lapack-reference
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, buildSamples ? false
|
||||
}:
|
||||
|
||||
# Can also use cuSOLVER
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipsolver";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"sample"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "hipSOLVER";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-iMfaOv4TdTkmaRHCZOuqUfjO081J6on71+s8nIwwV00=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocblas
|
||||
rocsolver
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
lapack-reference
|
||||
];
|
||||
|
||||
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_CLIENTS_TESTS=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"-DBUILD_CLIENTS_BENCHMARKS=ON"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"-DBUILD_CLIENTS_SAMPLES=ON"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/hipsolver-test $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/hipsolver-bench $benchmark/bin
|
||||
'' + lib.optionalString buildSamples ''
|
||||
mkdir -p $sample/bin
|
||||
mv clients/staging/example-* $sample/bin
|
||||
patchelf $sample/bin/example-* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE"
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm SOLVER marshalling library";
|
||||
homepage = "https://github.com/ROCm/hipSOLVER";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,136 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocsparse
|
||||
, clr
|
||||
, gfortran
|
||||
, git
|
||||
, gtest
|
||||
, openmp
|
||||
, buildTests ? false
|
||||
, buildSamples ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
# This can also use cuSPARSE as a backend instead of rocSPARSE
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hipsparse";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"sample"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "hipSPARSE";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-fi5b0IF++OiezpM3JuUkhwpmW2apeFH4r5g6CcFseNY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocsparse
|
||||
git
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals (buildTests || buildSamples) [
|
||||
openmp
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DBUILD_CLIENTS_SAMPLES=${if buildSamples 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 (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 = lib.optionalString buildTests ''
|
||||
mkdir -p matrices
|
||||
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-01}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-02}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-03}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-04}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-05}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-06}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-07}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-08}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-09}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-10}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-11}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-12}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-13}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-14}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-15}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-16}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-17}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.matrices.matrix-18}/*.mtx matrices
|
||||
ln -s ${rocsparse.passthru.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
|
||||
'' + lib.optionalString buildSamples ''
|
||||
mkdir -p $sample/bin
|
||||
mv clients/staging/example_* $sample/bin
|
||||
patchelf --set-rpath $out/lib:${lib.makeLibraryPath (
|
||||
finalAttrs.buildInputs ++ [ clr gfortran.cc ])} $sample/bin/example_*
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm SPARSE marshalling library";
|
||||
homepage = "https://github.com/ROCm/hipSPARSE";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,48 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, callPackage
|
||||
, dpkg
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "hsa-amd-aqlprofile-bin";
|
||||
version = "6.0.2";
|
||||
|
||||
src = let
|
||||
version = finalAttrs.version;
|
||||
dotless = builtins.replaceStrings ["."] ["0"] version;
|
||||
incremental = "115";
|
||||
osRelease = "22.04";
|
||||
in fetchurl {
|
||||
url = "https://repo.radeon.com/rocm/apt/${version}/pool/main/h/hsa-amd-aqlprofile/hsa-amd-aqlprofile_1.0.0.${dotless}.${dotless}-${incremental}~${osRelease}_amd64.deb";
|
||||
hash = "sha256-0XeKUKaof5pSMS/UgLwumBDBYgyH/pCex9jViUKENXY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
dontPatch = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
cp -a opt/rocm-${finalAttrs.version}/* $out
|
||||
chmod +x $out/lib/libhsa-amd-aqlprofile64.so.1.*
|
||||
chmod +x $out/lib/hsa-amd-aqlprofile/librocprofv2_att.so
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = (callPackage ./update.nix { }) { inherit (finalAttrs) version; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "AQLPROFILE library for AMD HSA runtime API extension support";
|
||||
homepage = "https://rocm.docs.amd.com/en/latest/";
|
||||
license = with licenses; [ unfree ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,57 @@
|
|||
{ lib
|
||||
, writeScript
|
||||
}:
|
||||
|
||||
{ version }:
|
||||
|
||||
let
|
||||
prefix = "hsa-amd-aqlprofile";
|
||||
extVersion = lib.strings.concatStrings (lib.strings.intersperse "0" (lib.versions.splitVersion version));
|
||||
major = lib.versions.major version;
|
||||
minor = lib.versions.minor version;
|
||||
patch = lib.versions.patch version;
|
||||
|
||||
updateScript = writeScript "update.sh" ''
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl common-updater-scripts
|
||||
apt="https://repo.radeon.com/rocm/apt"
|
||||
pool="pool/main/h/${prefix}/"
|
||||
url="$apt/latest/$pool"
|
||||
res="$(curl -sL "$url")"
|
||||
deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)"
|
||||
patch="${patch}"
|
||||
|
||||
# Try up to 10 patch versions
|
||||
for i in {1..10}; do
|
||||
((patch++))
|
||||
extVersion="$(echo "$deb" | grep -o -P "(?<=\.....).*(?=\..*-)")"
|
||||
|
||||
if (( ''${#extVersion} == 6 )) && (( $extVersion <= ${extVersion} )); then
|
||||
url="https://repo.radeon.com/rocm/apt/${major}.${minor}.$patch/pool/main/h/${prefix}/"
|
||||
res="$(curl -sL "$url")"
|
||||
deb="${prefix}$(echo "$res" | grep -o -P "(?<=href=\"${prefix}).*(?=\">)" | tail -1)"
|
||||
else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
extVersion="$(echo $deb | grep -o -P "(?<=\.....).*(?=\..*-)")"
|
||||
version="$(echo $extVersion | sed "s/0/./1" | sed "s/0/./1")"
|
||||
IFS='.' read -a version_arr <<< "$version"
|
||||
|
||||
if (( ''${version_arr[0]} > 6 )); then
|
||||
echo "'rocmPackages_6.${prefix}-bin' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${prefix}-bin'." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if (( ''${#extVersion} == 6 )); then
|
||||
repoVersion="$version"
|
||||
|
||||
if (( ''${version:4:1} == 0 )); then
|
||||
repoVersion=''${version:0:3}
|
||||
fi
|
||||
|
||||
update-source-version rocmPackages_6.${prefix}-bin "$version" "" "$apt/$repoVersion/$pool$deb" --ignore-same-hash
|
||||
fi
|
||||
'';
|
||||
in [ updateScript ]
|
|
@ -0,0 +1,175 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, gcc12Stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, pkg-config
|
||||
, cmake
|
||||
, ninja
|
||||
, git
|
||||
, doxygen
|
||||
, sphinx
|
||||
, lit
|
||||
, libxml2
|
||||
, libxcrypt
|
||||
, libedit
|
||||
, libffi
|
||||
, mpfr
|
||||
, zlib
|
||||
, ncurses
|
||||
, python3Packages
|
||||
, buildDocs ? true
|
||||
, buildMan ? true
|
||||
, buildTests ? true
|
||||
, targetName ? "llvm"
|
||||
, targetDir ? "llvm"
|
||||
, targetProjects ? [ ]
|
||||
, targetRuntimes ? [ ]
|
||||
, llvmTargetsToBuild ? [ "NATIVE" ] # "NATIVE" resolves into x86 or aarch64 depending on stdenv
|
||||
, extraPatches ? [ ]
|
||||
, extraNativeBuildInputs ? [ ]
|
||||
, extraBuildInputs ? [ ]
|
||||
, extraCMakeFlags ? [ ]
|
||||
, extraPostPatch ? ""
|
||||
, checkTargets ? [(
|
||||
lib.optionalString buildTests (
|
||||
if targetDir == "runtimes"
|
||||
then "check-runtimes"
|
||||
else "check-all"
|
||||
)
|
||||
)]
|
||||
, extraPostInstall ? ""
|
||||
, hardeningDisable ? [ ]
|
||||
, requiredSystemFeatures ? [ ]
|
||||
, extraLicenses ? [ ]
|
||||
, isBroken ? false
|
||||
}:
|
||||
|
||||
let stdenv' = stdenv; in
|
||||
let stdenv =
|
||||
if stdenv'.cc.cc.isGNU or false && lib.versionAtLeast stdenv'.cc.cc.version "13.0"
|
||||
then gcc12Stdenv
|
||||
else stdenv';
|
||||
in
|
||||
|
||||
let
|
||||
llvmNativeTarget =
|
||||
if stdenv.isx86_64 then "X86"
|
||||
else if stdenv.isAarch64 then "AArch64"
|
||||
else throw "Unsupported ROCm LLVM platform";
|
||||
inferNativeTarget = t: if t == "NATIVE" then llvmNativeTarget else t;
|
||||
llvmTargetsToBuild' = [ "AMDGPU" ] ++ builtins.map inferNativeTarget llvmTargetsToBuild;
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-llvm-${targetName}";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
] ++ lib.optionals buildMan [
|
||||
"man"
|
||||
"info" # Avoid `attribute 'info' missing` when using with wrapCC
|
||||
];
|
||||
|
||||
patches = extraPatches;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "llvm-project";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-uGxalrwMNCOSqSFVrYUBi3ijkMEFFTrzFImmvZKQf6I=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
ninja
|
||||
git
|
||||
python3Packages.python
|
||||
] ++ lib.optionals (buildDocs || buildMan) [
|
||||
doxygen
|
||||
sphinx
|
||||
python3Packages.recommonmark
|
||||
] ++ lib.optionals (buildTests && !finalAttrs.passthru.isLLVM) [
|
||||
lit
|
||||
] ++ extraNativeBuildInputs;
|
||||
|
||||
buildInputs = [
|
||||
libxml2
|
||||
libxcrypt
|
||||
libedit
|
||||
libffi
|
||||
mpfr
|
||||
] ++ extraBuildInputs;
|
||||
|
||||
propagatedBuildInputs = lib.optionals finalAttrs.passthru.isLLVM [
|
||||
zlib
|
||||
ncurses
|
||||
];
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/${targetDir}";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DLLVM_TARGETS_TO_BUILD=${builtins.concatStringsSep ";" llvmTargetsToBuild'}"
|
||||
] ++ lib.optionals (finalAttrs.passthru.isLLVM && targetProjects != [ ]) [
|
||||
"-DLLVM_ENABLE_PROJECTS=${lib.concatStringsSep ";" targetProjects}"
|
||||
] ++ lib.optionals ((finalAttrs.passthru.isLLVM || targetDir == "runtimes") && targetRuntimes != [ ]) [
|
||||
"-DLLVM_ENABLE_RUNTIMES=${lib.concatStringsSep ";" targetRuntimes}"
|
||||
] ++ lib.optionals finalAttrs.passthru.isLLVM [
|
||||
"-DLLVM_INSTALL_UTILS=ON"
|
||||
"-DLLVM_INSTALL_GTEST=ON"
|
||||
] ++ lib.optionals (buildDocs || buildMan) [
|
||||
"-DLLVM_INCLUDE_DOCS=ON"
|
||||
"-DLLVM_BUILD_DOCS=ON"
|
||||
# "-DLLVM_ENABLE_DOXYGEN=ON" Way too slow, only uses one core
|
||||
"-DLLVM_ENABLE_SPHINX=ON"
|
||||
"-DSPHINX_OUTPUT_HTML=ON"
|
||||
"-DSPHINX_OUTPUT_MAN=ON"
|
||||
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DLLVM_INCLUDE_TESTS=ON"
|
||||
"-DLLVM_BUILD_TESTS=ON"
|
||||
"-DLLVM_EXTERNAL_LIT=${lit}/bin/.lit-wrapped"
|
||||
] ++ extraCMakeFlags;
|
||||
|
||||
postPatch = lib.optionalString finalAttrs.passthru.isLLVM ''
|
||||
patchShebangs lib/OffloadArch/make_generated_offload_arch_h.sh
|
||||
'' + lib.optionalString (buildTests && finalAttrs.passthru.isLLVM) ''
|
||||
# FileSystem permissions tests fail with various special bits
|
||||
rm test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
|
||||
rm unittests/Support/Path.cpp
|
||||
|
||||
substituteInPlace unittests/Support/CMakeLists.txt \
|
||||
--replace "Path.cpp" ""
|
||||
'' + extraPostPatch;
|
||||
|
||||
doCheck = buildTests;
|
||||
checkTarget = lib.concatStringsSep " " checkTargets;
|
||||
|
||||
postInstall = lib.optionalString buildMan ''
|
||||
mkdir -p $info
|
||||
'' + extraPostInstall;
|
||||
|
||||
passthru = {
|
||||
isLLVM = targetDir == "llvm";
|
||||
isClang = targetDir == "clang" || builtins.elem "clang" targetProjects;
|
||||
|
||||
updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
};
|
||||
|
||||
inherit hardeningDisable requiredSystemFeatures;
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm fork of the LLVM compiler infrastructure";
|
||||
homepage = "https://github.com/ROCm/llvm-project";
|
||||
license = with licenses; [ ncsa ] ++ extraLicenses;
|
||||
maintainers = with maintainers; [ acowley lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = isBroken || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,58 @@
|
|||
{ # stdenv FIXME: Try changing back to this with a new ROCm release https://github.com/NixOS/nixpkgs/issues/271943
|
||||
gcc12Stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, wrapBintoolsWith
|
||||
, overrideCC
|
||||
, rocm-device-libs
|
||||
, rocm-runtime
|
||||
, rocm-thunk
|
||||
, clr
|
||||
}:
|
||||
|
||||
let
|
||||
## Stage 1 ##
|
||||
# Projects
|
||||
llvm = callPackage ./stage-1/llvm.nix { inherit rocmUpdateScript; stdenv = gcc12Stdenv; };
|
||||
clang-unwrapped = callPackage ./stage-1/clang-unwrapped.nix { inherit rocmUpdateScript llvm; stdenv = gcc12Stdenv; };
|
||||
lld = callPackage ./stage-1/lld.nix { inherit rocmUpdateScript llvm; stdenv = gcc12Stdenv; };
|
||||
|
||||
# Runtimes
|
||||
runtimes = callPackage ./stage-1/runtimes.nix { inherit rocmUpdateScript llvm; stdenv = gcc12Stdenv; };
|
||||
|
||||
## Stage 2 ##
|
||||
# Helpers
|
||||
bintools-unwrapped = callPackage ./stage-2/bintools-unwrapped.nix { inherit llvm lld; };
|
||||
bintools = wrapBintoolsWith { bintools = bintools-unwrapped; };
|
||||
rStdenv = callPackage ./stage-2/rstdenv.nix { inherit llvm clang-unwrapped lld runtimes bintools; stdenv = gcc12Stdenv; };
|
||||
in rec {
|
||||
inherit
|
||||
llvm
|
||||
clang-unwrapped
|
||||
lld
|
||||
bintools;
|
||||
|
||||
# Runtimes
|
||||
libc = callPackage ./stage-2/libc.nix { inherit rocmUpdateScript; stdenv = rStdenv; };
|
||||
libunwind = callPackage ./stage-2/libunwind.nix { inherit rocmUpdateScript; stdenv = rStdenv; };
|
||||
libcxxabi = callPackage ./stage-2/libcxxabi.nix { inherit rocmUpdateScript; stdenv = rStdenv; };
|
||||
libcxx = callPackage ./stage-2/libcxx.nix { inherit rocmUpdateScript; stdenv = rStdenv; };
|
||||
compiler-rt = callPackage ./stage-2/compiler-rt.nix { inherit rocmUpdateScript llvm; stdenv = rStdenv; };
|
||||
|
||||
## Stage 3 ##
|
||||
# Helpers
|
||||
clang = callPackage ./stage-3/clang.nix { inherit llvm lld clang-unwrapped bintools libc libunwind libcxxabi libcxx compiler-rt; stdenv = gcc12Stdenv; };
|
||||
rocmClangStdenv = overrideCC gcc12Stdenv clang;
|
||||
|
||||
# Projects
|
||||
clang-tools-extra = callPackage ./stage-3/clang-tools-extra.nix { inherit rocmUpdateScript llvm clang-unwrapped; stdenv = rocmClangStdenv; };
|
||||
libclc = callPackage ./stage-3/libclc.nix { inherit rocmUpdateScript llvm clang; stdenv = rocmClangStdenv; };
|
||||
lldb = callPackage ./stage-3/lldb.nix { inherit rocmUpdateScript clang; stdenv = rocmClangStdenv; };
|
||||
mlir = callPackage ./stage-3/mlir.nix { inherit rocmUpdateScript clr; stdenv = rocmClangStdenv; };
|
||||
polly = callPackage ./stage-3/polly.nix { inherit rocmUpdateScript; stdenv = rocmClangStdenv; };
|
||||
flang = callPackage ./stage-3/flang.nix { inherit rocmUpdateScript clang-unwrapped mlir; stdenv = rocmClangStdenv; };
|
||||
openmp = callPackage ./stage-3/openmp.nix { inherit rocmUpdateScript llvm clang-unwrapped clang rocm-device-libs rocm-runtime rocm-thunk; stdenv = rocmClangStdenv; };
|
||||
|
||||
# Runtimes
|
||||
pstl = callPackage ./stage-3/pstl.nix { inherit rocmUpdateScript; stdenv = rocmClangStdenv; };
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
targetName = "clang-unwrapped";
|
||||
targetDir = "clang";
|
||||
extraBuildInputs = [ llvm ];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DCLANG_INCLUDE_DOCS=ON"
|
||||
"-DCLANG_INCLUDE_TESTS=ON"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
# Looks like they forgot to add finding libedit to the standalone build
|
||||
ln -s ../cmake/Modules/FindLibEdit.cmake cmake/modules
|
||||
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "include(CheckIncludeFile)" "include(CheckIncludeFile)''\nfind_package(LibEdit)"
|
||||
|
||||
# `No such file or directory: '/build/source/clang/tools/scan-build/bin/scan-build'`
|
||||
rm test/Analysis/scan-build/*.test
|
||||
rm test/Analysis/scan-build/rebuild_index/rebuild_index.test
|
||||
|
||||
# `does not depend on a module exporting 'baz.h'`
|
||||
rm test/Modules/header-attribs.cpp
|
||||
|
||||
# We do not have HIP or the ROCm stack available yet
|
||||
rm test/Driver/hip-options.hip
|
||||
|
||||
# ???? `ld: cannot find crti.o: No such file or directory` linker issue?
|
||||
rm test/Interpreter/dynamic-library.cpp
|
||||
|
||||
# `fatal error: 'stdio.h' file not found`
|
||||
rm test/OpenMP/amdgcn_emit_llvm.c
|
||||
'';
|
||||
|
||||
extraPostInstall = ''
|
||||
mv bin/clang-tblgen $out/bin
|
||||
'';
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "lld";
|
||||
targetDir = targetName;
|
||||
extraBuildInputs = [ llvm ];
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
isBroken = stdenv.isAarch64; # https://github.com/ROCm/ROCm/issues/1831#issuecomment-1278205344
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildDocs = false;
|
||||
buildMan = false;
|
||||
buildTests = false;
|
||||
targetName = "runtimes";
|
||||
targetDir = targetName;
|
||||
|
||||
targetRuntimes = [
|
||||
"libunwind"
|
||||
"libcxxabi"
|
||||
"libcxx"
|
||||
"compiler-rt"
|
||||
];
|
||||
|
||||
extraBuildInputs = [ llvm ];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DLIBCXX_INCLUDE_BENCHMARKS=OFF"
|
||||
"-DLIBCXX_CXX_ABI=libcxxabi"
|
||||
];
|
||||
|
||||
extraLicenses = [ lib.licenses.mit ];
|
||||
}
|
|
@ -0,0 +1,171 @@
|
|||
../libcxx/test/libcxx/containers/gnu_cxx/hash_map.pass.cpp
|
||||
../libcxx/test/libcxx/containers/gnu_cxx/hash_set.pass.cpp
|
||||
../libcxx/test/libcxx/depr/depr.default.allocator/allocator.members/allocate.cxx2a.pass.cpp
|
||||
../libcxx/test/libcxx/depr/depr.default.allocator/allocator.members/construct.cxx2a.pass.cpp
|
||||
../libcxx/test/libcxx/input.output/filesystems/class.directory_entry/directory_entry.mods/last_write_time.pass.cpp
|
||||
../libcxx/test/libcxx/input.output/filesystems/class.path/path.member/path.native.obs/string_alloc.pass.cpp
|
||||
../libcxx/test/libcxx/language.support/support.dynamic/libcpp_deallocate.sh.cpp
|
||||
../libcxx/test/libcxx/localization/locales/locale/locale.types/locale.facet/no_allocation.pass.cpp
|
||||
../libcxx/test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_underaligned_buffer.pass.cpp
|
||||
../libcxx/test/libcxx/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_in_geometric_progression.pass.cpp
|
||||
../libcxx/test/std/containers/associative/map/map.access/index_key.pass.cpp
|
||||
../libcxx/test/std/containers/associative/map/map.access/index_rv_key.pass.cpp
|
||||
../libcxx/test/std/containers/associative/map/map.modifiers/insert_and_emplace_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/associative/multimap/multimap.modifiers/insert_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/associative/multiset/insert_emplace_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/associative/set/insert_and_emplace_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_iter_iter.pass.cpp
|
||||
../libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_size_value.pass.cpp
|
||||
../libcxx/test/std/containers/sequences/list/list.modifiers/insert_iter_value.pass.cpp
|
||||
../libcxx/test/std/containers/sequences/vector.bool/ctor_exceptions.pass.cpp
|
||||
../libcxx/test/std/containers/sequences/vector/vector.cons/exceptions.pass.cpp
|
||||
../libcxx/test/std/containers/unord/unord.map/unord.map.elem/index.pass.cpp
|
||||
../libcxx/test/std/containers/unord/unord.map/unord.map.modifiers/insert_and_emplace_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/unord/unord.multimap/unord.multimap.modifiers/insert_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/unord/unord.multiset/insert_emplace_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/containers/unord/unord.set/insert_and_emplace_allocator_requirements.pass.cpp
|
||||
../libcxx/test/std/experimental/memory/memory.resource.global/new_delete_resource.pass.cpp
|
||||
../libcxx/test/std/experimental/memory/memory.resource.global/null_memory_resource.pass.cpp
|
||||
../libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/pbackfail.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy_assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/copy.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move_assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/move.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.cons/path.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/refresh.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.mods/replace_filename.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_size.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/file_type_obs.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/hard_link_count.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/last_write_time.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/status.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_entry/directory_entry.obs/symlink_status.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy_assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/copy.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/ctor.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/increment.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move_assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.members/move.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.directory_iterator/directory_iterator.nonmembers/begin_end.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.append.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/move.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.assign/source.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.compare.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.concat.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.construct/move.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.decompose/path.decompose.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_normal.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.gen/lexically_relative_and_proximate.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/generic_string_alloc.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.generic.obs/named_overloads.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/clear.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/make_preferred.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/remove_filename.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_extension.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/replace_filename.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.modifiers/swap.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.member/path.native.obs/named_overloads.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.factory.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.nonmember/path.io.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.path/path.nonmember/swap.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy_assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/copy.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/ctor.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/depth.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/disable_recursion_pending.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/increment.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move_assign.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/move.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/pop.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.members/recursion_pending.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/class.rec.dir.itr/rec.dir.itr.nonmembers/begin_end.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.canonical/canonical.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file_large.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_file/copy_file.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy_symlink/copy_symlink.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.copy/copy.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directories/create_directories.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory_symlink/create_directory_symlink.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory_with_attributes.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_directory/create_directory.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_hard_link/create_hard_link.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.create_symlink/create_symlink.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.current_path/current_path.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.equivalent/equivalent.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.exists/exists.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.file_size/file_size.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.hard_lk_ct/hard_link_count.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_block_file/is_block_file.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_char_file/is_character_file.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_directory/is_directory.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_empty/is_empty.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_fifo/is_fifo.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_other/is_other.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_regular_file/is_regular_file.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_socket/is_socket.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.is_symlink/is_symlink.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.last_write_time/last_write_time.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.permissions/permissions.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.proximate/proximate.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.read_symlink/read_symlink.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.relative/relative.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/remove_all.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove_all/toctou.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.remove/remove.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.rename/rename.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.resize_file/resize_file.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.space/space.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.status/status.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.symlink_status/symlink_status.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.temp_dir_path/temp_directory_path.pass.cpp
|
||||
../libcxx/test/std/input.output/filesystems/fs.op.funcs/fs.op.weakly_canonical/weakly_canonical.pass.cpp
|
||||
../libcxx/test/std/localization/locale.categories/category.ctype/facet.ctype.special/facet.ctype.char.dtor/dtor.pass.cpp
|
||||
../libcxx/test/std/localization/locale.stdcvt/codecvt_utf16.pass.cpp
|
||||
../libcxx/test/std/localization/locale.stdcvt/codecvt_utf8.pass.cpp
|
||||
../libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/ctor.pass.cpp
|
||||
../libcxx/test/std/localization/locales/locale/locale.members/combine.pass.cpp
|
||||
../libcxx/test/std/strings/basic.string/string.cons/substr_rvalue.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.assign/copy.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.assign/value.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.cons/copy.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.cons/default.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.cons/in_place_type.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.cons/move.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.cons/value.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.class/any.modifiers/emplace.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.nonmembers/any.cast/any_cast_reference.pass.cpp
|
||||
../libcxx/test/std/utilities/any/any.nonmembers/make_any.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.alg/swap.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_assign.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/copy_move.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F_assign.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/F.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.con/nullptr_t_assign.pass.cpp
|
||||
../libcxx/test/std/utilities/function.objects/func.wrap/func.wrap.func/func.wrap.func.mod/swap.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate_at_least.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/default.allocator/allocator.members/allocate.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.enab/enable_shared_from_this.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/nullptr_t_deleter_throw.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_deleter_throw.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/pointer_throw.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.const/unique_ptr.pass.cpp
|
||||
../libcxx/test/std/utilities/memory/util.smartptr/util.smartptr.shared/util.smartptr.shared.create/make_shared.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.global/new_delete_resource.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.global/null_memory_resource.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.ctor/without_buffer.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_deallocate.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_exception_safety.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_initial_buffer.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_from_zero_sized_buffer.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_in_geometric_progression.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_overaligned_request.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.monotonic.buffer/mem.res.monotonic.buffer.mem/allocate_with_initial_size.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.ctor/ctor_does_not_allocate.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/equality.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_overaligned_request.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate_reuse_blocks.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/sync_allocate.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_overaligned_request.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate_reuse_blocks.pass.cpp
|
||||
../libcxx/test/std/utilities/utility/mem.res/mem.res.pool/mem.res.pool.mem/unsync_allocate.pass.cpp
|
|
@ -0,0 +1,28 @@
|
|||
{ runCommand
|
||||
, llvm
|
||||
, lld
|
||||
}:
|
||||
|
||||
runCommand "rocm-llvm-binutils-${llvm.version}" { preferLocalBuild = true; } ''
|
||||
mkdir -p $out/bin
|
||||
|
||||
for prog in ${lld}/bin/*; do
|
||||
ln -s $prog $out/bin/$(basename $prog)
|
||||
done
|
||||
|
||||
for prog in ${llvm}/bin/*; do
|
||||
ln -sf $prog $out/bin/$(basename $prog)
|
||||
done
|
||||
|
||||
ln -s ${llvm}/bin/llvm-ar $out/bin/ar
|
||||
ln -s ${llvm}/bin/llvm-as $out/bin/as
|
||||
ln -s ${llvm}/bin/llvm-dwp $out/bin/dwp
|
||||
ln -s ${llvm}/bin/llvm-nm $out/bin/nm
|
||||
ln -s ${llvm}/bin/llvm-objcopy $out/bin/objcopy
|
||||
ln -s ${llvm}/bin/llvm-objdump $out/bin/objdump
|
||||
ln -s ${llvm}/bin/llvm-ranlib $out/bin/ranlib
|
||||
ln -s ${llvm}/bin/llvm-readelf $out/bin/readelf
|
||||
ln -s ${llvm}/bin/llvm-size $out/bin/size
|
||||
ln -s ${llvm}/bin/llvm-strip $out/bin/strip
|
||||
ln -s ${lld}/bin/lld $out/bin/ld
|
||||
''
|
|
@ -0,0 +1,63 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
, glibc
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildDocs = false; # No documentation to build
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "compiler-rt";
|
||||
targetDir = "runtimes";
|
||||
|
||||
targetRuntimes = [
|
||||
"libunwind"
|
||||
"libcxxabi"
|
||||
"libcxx"
|
||||
targetName
|
||||
];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DCOMPILER_RT_INCLUDE_TESTS=ON"
|
||||
"-DCOMPILER_RT_USE_LLVM_UNWINDER=ON"
|
||||
"-DCOMPILER_RT_CXX_LIBRARY=libcxx"
|
||||
"-DCOMPILER_RT_CAN_EXECUTE_TESTS=OFF" # We can't run most of these
|
||||
|
||||
# Workaround having to build combined
|
||||
"-DLIBUNWIND_INCLUDE_DOCS=OFF"
|
||||
"-DLIBUNWIND_INCLUDE_TESTS=OFF"
|
||||
"-DLIBUNWIND_USE_COMPILER_RT=ON"
|
||||
"-DLIBUNWIND_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBUNWIND_INSTALL_HEADERS=OFF"
|
||||
"-DLIBCXXABI_INCLUDE_TESTS=OFF"
|
||||
"-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
|
||||
"-DLIBCXXABI_USE_COMPILER_RT=ON"
|
||||
"-DLIBCXXABI_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBCXXABI_INSTALL_HEADERS=OFF"
|
||||
"-DLIBCXX_INCLUDE_DOCS=OFF"
|
||||
"-DLIBCXX_INCLUDE_TESTS=OFF"
|
||||
"-DLIBCXX_USE_COMPILER_RT=ON"
|
||||
"-DLIBCXX_CXX_ABI=libcxxabi"
|
||||
"-DLIBCXX_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBCXX_INSTALL_HEADERS=OFF"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
# `No such file or directory: 'ldd'`
|
||||
substituteInPlace ../compiler-rt/test/lit.common.cfg.py \
|
||||
--replace "'ldd'," "'${glibc.bin}/bin/ldd',"
|
||||
|
||||
# We can run these
|
||||
substituteInPlace ../compiler-rt/test/CMakeLists.txt \
|
||||
--replace "endfunction()" "endfunction()''\nadd_subdirectory(builtins)''\nadd_subdirectory(shadowcallstack)"
|
||||
|
||||
# Could not launch llvm-config in /build/source/runtimes/build/bin
|
||||
mkdir -p build/bin
|
||||
ln -s ${llvm}/bin/llvm-config build/bin
|
||||
'';
|
||||
|
||||
extraLicenses = [ lib.licenses.mit ];
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "libc";
|
||||
targetDir = "runtimes";
|
||||
targetRuntimes = [ targetName ];
|
||||
|
||||
extraPostPatch = ''
|
||||
# `Failed to match ... against ...` `Match value not within tolerance value of MPFR result:`
|
||||
# We need a better way, but I don't know enough sed magic and patching `CMakeLists.txt` isn't working...
|
||||
substituteInPlace ../libc/test/src/math/log10_test.cpp \
|
||||
--replace "i < N" "i < 0" \
|
||||
--replace "test(mpfr::RoundingMode::Nearest);" "" \
|
||||
--replace "test(mpfr::RoundingMode::Downward);" "" \
|
||||
--replace "test(mpfr::RoundingMode::Upward);" "" \
|
||||
--replace "test(mpfr::RoundingMode::TowardZero);" ""
|
||||
'';
|
||||
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
hardeningDisable = [ "fortify" ]; # Prevent `error: "Assumed value of MB_LEN_MAX wrong"`
|
||||
}
|
|
@ -0,0 +1,42 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "libcxx";
|
||||
targetDir = "runtimes";
|
||||
|
||||
targetRuntimes = [
|
||||
"libunwind"
|
||||
"libcxxabi"
|
||||
targetName
|
||||
];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DLIBCXX_INCLUDE_DOCS=ON"
|
||||
"-DLIBCXX_INCLUDE_TESTS=ON"
|
||||
"-DLIBCXX_USE_COMPILER_RT=ON"
|
||||
"-DLIBCXX_CXX_ABI=libcxxabi"
|
||||
|
||||
# Workaround having to build combined
|
||||
"-DLIBUNWIND_INCLUDE_DOCS=OFF"
|
||||
"-DLIBUNWIND_INCLUDE_TESTS=OFF"
|
||||
"-DLIBUNWIND_USE_COMPILER_RT=ON"
|
||||
"-DLIBUNWIND_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBUNWIND_INSTALL_HEADERS=OFF"
|
||||
"-DLIBCXXABI_INCLUDE_TESTS=OFF"
|
||||
"-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
|
||||
"-DLIBCXXABI_USE_COMPILER_RT=ON"
|
||||
"-DLIBCXXABI_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBCXXABI_INSTALL_HEADERS=OFF"
|
||||
];
|
||||
|
||||
# Most of these can't find `bash` or `mkdir`, might just be hard-coded paths, or PATH is altered
|
||||
extraPostPatch = ''
|
||||
chmod +w -R ../libcxx/test/{libcxx,std}
|
||||
cat ${./1000-libcxx-failing-tests.list} | xargs -d \\n rm
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildDocs = false; # No documentation to build
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "libcxxabi";
|
||||
targetDir = "runtimes";
|
||||
|
||||
targetRuntimes = [
|
||||
"libunwind"
|
||||
targetName
|
||||
"libcxx"
|
||||
];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DLIBCXXABI_INCLUDE_TESTS=ON"
|
||||
"-DLIBCXXABI_USE_LLVM_UNWINDER=ON"
|
||||
"-DLIBCXXABI_USE_COMPILER_RT=ON"
|
||||
|
||||
# Workaround having to build combined
|
||||
"-DLIBUNWIND_INCLUDE_DOCS=OFF"
|
||||
"-DLIBUNWIND_INCLUDE_TESTS=OFF"
|
||||
"-DLIBUNWIND_USE_COMPILER_RT=ON"
|
||||
"-DLIBUNWIND_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBUNWIND_INSTALL_HEADERS=OFF"
|
||||
"-DLIBCXX_INCLUDE_DOCS=OFF"
|
||||
"-DLIBCXX_INCLUDE_TESTS=OFF"
|
||||
"-DLIBCXX_USE_COMPILER_RT=ON"
|
||||
"-DLIBCXX_CXX_ABI=libcxxabi"
|
||||
"-DLIBCXX_INSTALL_LIBRARY=OFF"
|
||||
"-DLIBCXX_INSTALL_HEADERS=OFF"
|
||||
];
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "libunwind";
|
||||
targetDir = "runtimes";
|
||||
targetRuntimes = [ targetName ];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DLIBUNWIND_INCLUDE_DOCS=ON"
|
||||
"-DLIBUNWIND_INCLUDE_TESTS=ON"
|
||||
"-DLIBUNWIND_USE_COMPILER_RT=ON"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
# `command had no output on stdout or stderr` (Says these unsupported tests)
|
||||
chmod +w -R ../libunwind/test
|
||||
rm ../libunwind/test/floatregister.pass.cpp
|
||||
rm ../libunwind/test/unwind_leaffunction.pass.cpp
|
||||
rm ../libunwind/test/libunwind_02.pass.cpp
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{ stdenv
|
||||
, overrideCC
|
||||
, wrapCCWith
|
||||
, llvm
|
||||
, clang-unwrapped
|
||||
, lld
|
||||
, runtimes
|
||||
, bintools
|
||||
}:
|
||||
|
||||
overrideCC stdenv (wrapCCWith rec {
|
||||
inherit bintools;
|
||||
libcxx = runtimes;
|
||||
cc = clang-unwrapped;
|
||||
gccForLibs = stdenv.cc.cc;
|
||||
|
||||
extraPackages = [
|
||||
llvm
|
||||
lld
|
||||
];
|
||||
|
||||
nixSupport.cc-cflags = [
|
||||
"-resource-dir=$out/resource-root"
|
||||
"-fuse-ld=lld"
|
||||
"-rtlib=compiler-rt"
|
||||
"-unwindlib=libunwind"
|
||||
"-Wno-unused-command-line-argument"
|
||||
];
|
||||
|
||||
extraBuildCommands = ''
|
||||
clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
|
||||
mkdir -p $out/resource-root
|
||||
ln -s ${cc}/lib/clang/$clang_version/include $out/resource-root
|
||||
ln -s ${runtimes}/lib $out/resource-root
|
||||
'';
|
||||
})
|
|
@ -0,0 +1,36 @@
|
|||
From f1d1e10ec7e1061bf0b90abbc1e298d9438a5e74 Mon Sep 17 00:00:00 2001
|
||||
From: Scott Linder <Scott.Linder@amd.com>
|
||||
Date: Mon, 11 Sep 2023 18:37:37 +0000
|
||||
Subject: [PATCH] [HeterogeneousDWARF] Update MLIR DI Metadata handling
|
||||
|
||||
Pass a default DW_MSPACE_LLVM_none to satisfy new API
|
||||
|
||||
Change-Id: I50df461f00b5510a715f55f61107122318102d22
|
||||
---
|
||||
lib/Target/LLVMIR/DebugTranslation.cpp | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/Target/LLVMIR/DebugTranslation.cpp b/lib/Target/LLVMIR/DebugTranslation.cpp
|
||||
index 2053f5bcef06aa6..635ee5d7e5fefdc 100644
|
||||
--- a/lib/Target/LLVMIR/DebugTranslation.cpp
|
||||
+++ b/lib/Target/LLVMIR/DebugTranslation.cpp
|
||||
@@ -148,7 +148,8 @@ llvm::DIDerivedType *DebugTranslation::translateImpl(DIDerivedTypeAttr attr) {
|
||||
/*File=*/nullptr, /*Line=*/0,
|
||||
/*Scope=*/nullptr, translate(attr.getBaseType()), attr.getSizeInBits(),
|
||||
attr.getAlignInBits(), attr.getOffsetInBits(),
|
||||
- /*DWARFAddressSpace=*/std::nullopt, /*Flags=*/llvm::DINode::FlagZero);
|
||||
+ /*DWARFAddressSpace=*/std::nullopt, llvm::dwarf::DW_MSPACE_LLVM_none,
|
||||
+ /*Flags=*/llvm::DINode::FlagZero);
|
||||
}
|
||||
|
||||
llvm::DIFile *DebugTranslation::translateImpl(DIFileAttr attr) {
|
||||
@@ -185,7 +186,8 @@ DebugTranslation::translateImpl(DILocalVariableAttr attr) {
|
||||
llvmCtx, translate(attr.getScope()), getMDStringOrNull(attr.getName()),
|
||||
translate(attr.getFile()), attr.getLine(), translate(attr.getType()),
|
||||
attr.getArg(),
|
||||
- /*Flags=*/llvm::DINode::FlagZero, attr.getAlignInBits(),
|
||||
+ /*Flags=*/llvm::DINode::FlagZero, llvm::dwarf::DW_MSPACE_LLVM_none,
|
||||
+ attr.getAlignInBits(),
|
||||
/*Annotations=*/nullptr);
|
||||
}
|
||||
|
|
@ -0,0 +1,122 @@
|
|||
runtime/test/tasking/hidden_helper_task/gtid.cpp
|
||||
runtime/test/ompt/parallel/parallel_if0.c
|
||||
runtime/test/ompt/parallel/serialized.c
|
||||
runtime/test/ompt/teams/parallel_team.c
|
||||
runtime/test/ompt/teams/serial_teams.c
|
||||
runtime/test/ompt/teams/serialized.c
|
||||
runtime/test/ompt/teams/team.c
|
||||
libomptarget/test/api/assert.c
|
||||
libomptarget/test/api/omp_device_managed_memory.c
|
||||
libomptarget/test/api/omp_device_memory.c
|
||||
libomptarget/test/api/omp_get_device_num.c
|
||||
libomptarget/test/api/omp_host_pinned_memory.c
|
||||
libomptarget/test/api/omp_host_pinned_memory_alloc.c
|
||||
libomptarget/test/api/omp_target_memcpy_async1.c
|
||||
libomptarget/test/api/omp_target_memcpy_async2.c
|
||||
libomptarget/test/api/omp_target_memcpy_rect_async1.c
|
||||
libomptarget/test/api/omp_target_memcpy_rect_async2.c
|
||||
libomptarget/test/mapping/array_section_implicit_capture.c
|
||||
libomptarget/test/mapping/data_absent_at_exit.c
|
||||
libomptarget/test/mapping/data_member_ref.cpp
|
||||
libomptarget/test/mapping/declare_mapper_api.cpp
|
||||
libomptarget/test/mapping/declare_mapper_target.cpp
|
||||
libomptarget/test/mapping/declare_mapper_target_data.cpp
|
||||
libomptarget/test/mapping/declare_mapper_target_data_enter_exit.cpp
|
||||
libomptarget/test/mapping/firstprivate_aligned.cpp
|
||||
libomptarget/test/mapping/has_device_addr.cpp
|
||||
libomptarget/test/mapping/implicit_device_ptr.c
|
||||
libomptarget/test/mapping/is_device_ptr.cpp
|
||||
libomptarget/test/mapping/lambda_mapping.cpp
|
||||
libomptarget/test/mapping/low_alignment.c
|
||||
libomptarget/test/mapping/map_back_race.cpp
|
||||
libomptarget/test/mapping/power_of_two_alignment.c
|
||||
libomptarget/test/mapping/pr38704.c
|
||||
libomptarget/test/mapping/prelock.cpp
|
||||
libomptarget/test/mapping/present/target_data_at_exit.c
|
||||
libomptarget/test/mapping/private_mapping.c
|
||||
libomptarget/test/mapping/ptr_and_obj_motion.c
|
||||
libomptarget/test/mapping/reduction_implicit_map.cpp
|
||||
libomptarget/test/mapping/target_derefence_array_pointrs.cpp
|
||||
libomptarget/test/mapping/target_map_for_member_data.cpp
|
||||
libomptarget/test/mapping/target_update_array_extension.c
|
||||
libomptarget/test/mapping/target_use_device_addr.c
|
||||
libomptarget/test/offloading/atomic-compare-signedness.c
|
||||
libomptarget/test/offloading/bug47654.cpp
|
||||
libomptarget/test/offloading/bug49021.cpp
|
||||
libomptarget/test/offloading/bug49779.cpp
|
||||
libomptarget/test/offloading/bug50022.cpp
|
||||
libomptarget/test/offloading/bug51781.c
|
||||
libomptarget/test/offloading/bug51982.c
|
||||
libomptarget/test/offloading/bug53727.cpp
|
||||
libomptarget/test/offloading/complex_reduction.cpp
|
||||
libomptarget/test/offloading/cuda_no_devices.c
|
||||
libomptarget/test/offloading/d2d_memcpy.c
|
||||
libomptarget/test/offloading/dynamic_module.c
|
||||
libomptarget/test/offloading/dynamic_module_load.c
|
||||
libomptarget/test/offloading/global_constructor.cpp
|
||||
libomptarget/test/offloading/lone_target_exit_data.c
|
||||
libomptarget/test/offloading/memory_manager.cpp
|
||||
libomptarget/test/offloading/parallel_offloading_map.cpp
|
||||
libomptarget/test/offloading/static_linking.c
|
||||
libomptarget/test/offloading/std_complex_arithmetic.cpp
|
||||
libomptarget/test/offloading/target-teams-atomic.c
|
||||
libomptarget/test/offloading/target_constexpr_mapping.cpp
|
||||
libomptarget/test/offloading/target_critical_region.cpp
|
||||
libomptarget/test/offloading/target_depend_nowait.cpp
|
||||
libomptarget/test/offloading/target_nowait_target.cpp
|
||||
libomptarget/test/offloading/taskloop_offload_nowait.cpp
|
||||
libomptarget/test/offloading/test_libc.cpp
|
||||
libomptarget/test/ompt/veccopy.c
|
||||
libomptarget/test/ompt/veccopy_disallow_both.c
|
||||
libomptarget/test/ompt/veccopy_emi.c
|
||||
libomptarget/test/ompt/veccopy_emi_map.c
|
||||
libomptarget/test/ompt/veccopy_map.c
|
||||
libomptarget/test/ompt/veccopy_no_device_init.c
|
||||
libomptarget/test/ompt/veccopy_wrong_return.c
|
||||
libomptarget/test/api/is_initial_device.c
|
||||
libomptarget/test/mapping/declare_mapper_nested_default_mappers_array_subscript.cpp
|
||||
libomptarget/test/mapping/declare_mapper_nested_default_mappers_ptr_subscript.cpp
|
||||
libomptarget/test/mapping/declare_mapper_nested_default_mappers_var.cpp
|
||||
libomptarget/test/mapping/target_pointers_members_map.cpp
|
||||
libomptarget/test/api/omp_dynamic_shared_memory_mixed.c
|
||||
libomptarget/test/api/omp_env_vars.c
|
||||
libomptarget/test/api/omp_get_mapped_ptr.c
|
||||
libomptarget/test/api/omp_get_num_devices.c
|
||||
libomptarget/test/api/omp_get_num_devices_with_empty_target.c
|
||||
libomptarget/test/mapping/alloc_fail.c
|
||||
libomptarget/test/mapping/array_section_use_device_ptr.c
|
||||
libomptarget/test/mapping/declare_mapper_nested_default_mappers.cpp
|
||||
libomptarget/test/mapping/declare_mapper_nested_mappers.cpp
|
||||
libomptarget/test/mapping/declare_mapper_target_update.cpp
|
||||
libomptarget/test/mapping/delete_inf_refcount.c
|
||||
libomptarget/test/mapping/lambda_by_value.cpp
|
||||
libomptarget/test/mapping/ompx_hold/omp_target_disassociate_ptr.c
|
||||
libomptarget/test/mapping/ompx_hold/struct.c
|
||||
libomptarget/test/mapping/ompx_hold/target-data.c
|
||||
libomptarget/test/mapping/ompx_hold/target.c
|
||||
libomptarget/test/mapping/present/target.c
|
||||
libomptarget/test/mapping/present/target_array_extension.c
|
||||
libomptarget/test/mapping/present/target_data.c
|
||||
libomptarget/test/mapping/present/target_data_array_extension.c
|
||||
libomptarget/test/mapping/present/target_enter_data.c
|
||||
libomptarget/test/mapping/present/target_exit_data_delete.c
|
||||
libomptarget/test/mapping/present/target_exit_data_release.c
|
||||
libomptarget/test/mapping/present/target_update.c
|
||||
libomptarget/test/mapping/present/target_update_array_extension.c
|
||||
libomptarget/test/mapping/present/zero_length_array_section.c
|
||||
libomptarget/test/mapping/present/zero_length_array_section_exit.c
|
||||
libomptarget/test/mapping/target_data_array_extension_at_exit.c
|
||||
libomptarget/test/mapping/target_has_device_addr.c
|
||||
libomptarget/test/mapping/target_implicit_partial_map.c
|
||||
libomptarget/test/mapping/target_wrong_use_device_addr.c
|
||||
libomptarget/test/offloading/host_as_target.c
|
||||
libomptarget/test/offloading/info.c
|
||||
libomptarget/test/offloading/offloading_success.c
|
||||
libomptarget/test/offloading/offloading_success.cpp
|
||||
libomptarget/test/offloading/wtime.c
|
||||
libomptarget/test/unified_shared_memory/api.c
|
||||
libomptarget/test/unified_shared_memory/associate_ptr.c
|
||||
libomptarget/test/unified_shared_memory/close_enter_exit.c
|
||||
libomptarget/test/unified_shared_memory/close_manual.c
|
||||
libomptarget/test/unified_shared_memory/close_member.c
|
||||
libomptarget/test/unified_shared_memory/close_modifier.c
|
|
@ -0,0 +1,11 @@
|
|||
./test/Target/LLVMIR/openmp-llvm.mlir
|
||||
./test/mlir-spirv-cpu-runner/double.mlir
|
||||
./test/mlir-spirv-cpu-runner/simple_add.mlir
|
||||
./test/mlir-vulkan-runner/addf.mlir
|
||||
./test/mlir-vulkan-runner/addi.mlir
|
||||
./test/mlir-vulkan-runner/addi8.mlir
|
||||
./test/mlir-vulkan-runner/mulf.mlir
|
||||
./test/mlir-vulkan-runner/smul_extended.mlir
|
||||
./test/mlir-vulkan-runner/subf.mlir
|
||||
./test/mlir-vulkan-runner/time.mlir
|
||||
./test/mlir-vulkan-runner/umul_extended.mlir
|
|
@ -0,0 +1,42 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
, clang-unwrapped
|
||||
, gtest
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildTests = false; # `invalid operands to binary expression ('std::basic_stringstream<char>' and 'const llvm::StringRef')`
|
||||
targetName = "clang-tools-extra";
|
||||
|
||||
targetProjects = [
|
||||
"clang"
|
||||
"clang-tools-extra"
|
||||
];
|
||||
|
||||
extraBuildInputs = [ gtest ];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DLLVM_INCLUDE_DOCS=OFF"
|
||||
"-DLLVM_INCLUDE_TESTS=OFF"
|
||||
"-DCLANG_INCLUDE_DOCS=OFF"
|
||||
"-DCLANG_INCLUDE_TESTS=ON"
|
||||
"-DCLANG_TOOLS_EXTRA_INCLUDE_DOCS=ON"
|
||||
];
|
||||
|
||||
extraPostInstall = ''
|
||||
# Remove LLVM and Clang
|
||||
for path in `find ${llvm} ${clang-unwrapped}`; do
|
||||
if [ $path != ${llvm} ] && [ $path != ${clang-unwrapped} ]; then
|
||||
rm -f $out''${path#${llvm}} $out''${path#${clang-unwrapped}} || true
|
||||
fi
|
||||
done
|
||||
|
||||
# Cleanup empty directories
|
||||
find $out -type d -empty -delete
|
||||
'';
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
}
|
|
@ -0,0 +1,73 @@
|
|||
{ stdenv
|
||||
, wrapCCWith
|
||||
, llvm
|
||||
, lld
|
||||
, clang-unwrapped
|
||||
, bintools
|
||||
, libc
|
||||
, libunwind
|
||||
, libcxxabi
|
||||
, libcxx
|
||||
, compiler-rt
|
||||
}:
|
||||
|
||||
wrapCCWith rec {
|
||||
inherit libcxx bintools;
|
||||
|
||||
# We do this to avoid HIP pathing problems, and mimic a monolithic install
|
||||
cc = stdenv.mkDerivation (finalAttrs: {
|
||||
inherit (clang-unwrapped) version;
|
||||
pname = "rocm-llvm-clang";
|
||||
dontUnpack = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
clang_version=`${clang-unwrapped}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
|
||||
mkdir -p $out/{bin,include/c++/v1,lib/{cmake,clang/$clang_version/{include,lib}},libexec,share}
|
||||
|
||||
for path in ${llvm} ${clang-unwrapped} ${lld} ${libc} ${libunwind} ${libcxxabi} ${libcxx} ${compiler-rt}; do
|
||||
cp -as $path/* $out
|
||||
chmod +w $out/{*,include/c++/v1,lib/{clang/$clang_version/include,cmake}}
|
||||
rm -f $out/lib/libc++.so
|
||||
done
|
||||
|
||||
ln -s $out/lib/* $out/lib/clang/$clang_version/lib
|
||||
ln -sf $out/include/* $out/lib/clang/$clang_version/include
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.isClang = true;
|
||||
});
|
||||
|
||||
extraPackages = [
|
||||
llvm
|
||||
lld
|
||||
libc
|
||||
libunwind
|
||||
libcxxabi
|
||||
compiler-rt
|
||||
];
|
||||
|
||||
nixSupport.cc-cflags = [
|
||||
"-resource-dir=$out/resource-root"
|
||||
"-fuse-ld=lld"
|
||||
"-rtlib=compiler-rt"
|
||||
"-unwindlib=libunwind"
|
||||
"-Wno-unused-command-line-argument"
|
||||
];
|
||||
|
||||
extraBuildCommands = ''
|
||||
clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
|
||||
mkdir -p $out/resource-root
|
||||
ln -s ${cc}/lib/clang/$clang_version/{include,lib} $out/resource-root
|
||||
|
||||
# Not sure why, but hardening seems to make things break
|
||||
echo "" > $out/nix-support/add-hardening.sh
|
||||
|
||||
# GPU compilation uses builtin `lld`
|
||||
substituteInPlace $out/bin/{clang,clang++} \
|
||||
--replace "-MM) dontLink=1 ;;" "-MM | --cuda-device-only) dontLink=1 ;;''\n--cuda-host-only | --cuda-compile-host-device) dontLink=0 ;;"
|
||||
'';
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, clang-unwrapped
|
||||
, mlir
|
||||
, graphviz
|
||||
, python3Packages
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
targetName = "flang";
|
||||
targetDir = targetName;
|
||||
|
||||
extraNativeBuildInputs = [
|
||||
graphviz
|
||||
python3Packages.sphinx-markdown-tables
|
||||
];
|
||||
|
||||
extraBuildInputs = [ mlir ];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DCLANG_DIR=${clang-unwrapped}/lib/cmake/clang"
|
||||
"-DMLIR_TABLEGEN_EXE=${mlir}/bin/mlir-tblgen"
|
||||
"-DCLANG_TABLEGEN_EXE=${clang-unwrapped}/bin/clang-tblgen"
|
||||
"-DFLANG_INCLUDE_TESTS=OFF" # `The dependency target "Bye" of target ...`
|
||||
];
|
||||
|
||||
# `flang/lib/Semantics/check-omp-structure.cpp:1905:1: error: no member named 'v' in 'Fortran::parser::OmpClause::OmpxDynCgroupMem'`
|
||||
isBroken = true;
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
, clang
|
||||
, spirv-llvm-translator
|
||||
}:
|
||||
|
||||
let
|
||||
spirv = (spirv-llvm-translator.override { inherit llvm; });
|
||||
in callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildDocs = false; # No documentation to build
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "libclc";
|
||||
targetDir = targetName;
|
||||
extraBuildInputs = [ spirv ];
|
||||
|
||||
# `spirv-mesa3d` isn't compiling with LLVM 15.0.0, it does with LLVM 14.0.0
|
||||
# Try removing the `spirv-mesa3d` and `clspv` patches next update
|
||||
# `clspv` tests fail, unresolved calls
|
||||
extraPostPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "find_program( LLVM_CLANG clang PATHS \''${LLVM_BINDIR} NO_DEFAULT_PATH )" \
|
||||
"find_program( LLVM_CLANG clang PATHS \"${clang}/bin\" NO_DEFAULT_PATH )" \
|
||||
--replace "find_program( LLVM_SPIRV llvm-spirv PATHS \''${LLVM_BINDIR} NO_DEFAULT_PATH )" \
|
||||
"find_program( LLVM_SPIRV llvm-spirv PATHS \"${spirv}/bin\" NO_DEFAULT_PATH )" \
|
||||
--replace " spirv-mesa3d-" "" \
|
||||
--replace " spirv64-mesa3d-" "" \
|
||||
--replace "NOT \''${t} MATCHES" \
|
||||
"NOT \''${ARCH} STREQUAL \"clspv\" AND NOT \''${ARCH} STREQUAL \"clspv64\" AND NOT \''${t} MATCHES"
|
||||
'';
|
||||
|
||||
checkTargets = [ ];
|
||||
isBroken = true; # ROCm 5.7.0 doesn't have IR/AttributeMask.h yet...?
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, clang
|
||||
, xz
|
||||
, swig
|
||||
, lua5_3
|
||||
, graphviz
|
||||
, gtest
|
||||
, python3Packages
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildTests = false; # FIXME: Bad pathing for clang executable in tests, using relative path most likely
|
||||
targetName = "lldb";
|
||||
targetDir = targetName;
|
||||
extraNativeBuildInputs = [ python3Packages.sphinx-automodapi ];
|
||||
|
||||
extraBuildInputs = [
|
||||
xz
|
||||
swig
|
||||
lua5_3
|
||||
graphviz
|
||||
gtest
|
||||
];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DLLDB_EXTERNAL_CLANG_RESOURCE_DIR=${clang}/resource-root/lib/clang/$clang_version"
|
||||
"-DLLDB_INCLUDE_TESTS=ON"
|
||||
"-DLLDB_INCLUDE_UNITTESTS=ON"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
export clang_version=`clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
|
||||
'';
|
||||
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, clr
|
||||
, vulkan-headers
|
||||
, vulkan-loader
|
||||
, glslang
|
||||
, shaderc
|
||||
, lit
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildDocs = false; # No decent way to hack this to work
|
||||
buildMan = false; # No man pages to build
|
||||
targetName = "mlir";
|
||||
targetDir = targetName;
|
||||
|
||||
# Fix `DebugTranslation.cpp:139:10: error: no matching function for call to 'get'`
|
||||
# We patch at a different source root, so we modify the patch and include it locally
|
||||
# https://github.com/ROCm/llvm-project/commit/f1d1e10ec7e1061bf0b90abbc1e298d9438a5e74.patch
|
||||
extraPatches = [ ./0000-mlir-fix-debugtranslation.patch ];
|
||||
extraNativeBuildInputs = [ clr ];
|
||||
|
||||
extraBuildInputs = [
|
||||
vulkan-headers
|
||||
vulkan-loader
|
||||
glslang
|
||||
shaderc
|
||||
];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DMLIR_INCLUDE_DOCS=ON"
|
||||
"-DMLIR_INCLUDE_TESTS=ON"
|
||||
"-DMLIR_ENABLE_ROCM_RUNNER=ON"
|
||||
"-DMLIR_ENABLE_SPIRV_CPU_RUNNER=ON"
|
||||
"-DMLIR_ENABLE_VULKAN_RUNNER=ON"
|
||||
"-DROCM_TEST_CHIPSET=gfx000" # CPU runner
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
# `add_library cannot create target "llvm_gtest" because an imported target with the same name already exists`
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "EXISTS \''${UNITTEST_DIR}/googletest/include/gtest/gtest.h" "FALSE"
|
||||
|
||||
# Mainly `No such file or directory`
|
||||
cat ${./1001-mlir-failing-tests.list} | xargs -d \\n rm
|
||||
'';
|
||||
|
||||
extraPostInstall = ''
|
||||
mkdir -p $out/bin
|
||||
mv bin/mlir-tblgen $out/bin
|
||||
'';
|
||||
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
, llvm
|
||||
, clang
|
||||
, clang-unwrapped
|
||||
, rocm-device-libs
|
||||
, rocm-runtime
|
||||
, rocm-thunk
|
||||
, perl
|
||||
, elfutils
|
||||
, libdrm
|
||||
, numactl
|
||||
, lit
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
targetName = "openmp";
|
||||
targetDir = targetName;
|
||||
extraNativeBuildInputs = [ perl ];
|
||||
|
||||
extraBuildInputs = [
|
||||
rocm-device-libs
|
||||
rocm-runtime
|
||||
rocm-thunk
|
||||
elfutils
|
||||
libdrm
|
||||
numactl
|
||||
];
|
||||
|
||||
extraCMakeFlags = [
|
||||
"-DCMAKE_MODULE_PATH=/build/source/llvm/cmake/modules" # For docs
|
||||
"-DCLANG_TOOL=${clang}/bin/clang"
|
||||
"-DCLANG_OFFLOAD_BUNDLER_TOOL=${clang-unwrapped}/bin/clang-offload-bundler"
|
||||
"-DPACKAGER_TOOL=${clang-unwrapped}/bin/clang-offload-packager"
|
||||
"-DOPENMP_LLVM_TOOLS_DIR=${llvm}/bin"
|
||||
"-DOPENMP_LLVM_LIT_EXECUTABLE=${lit}/bin/.lit-wrapped"
|
||||
"-DDEVICELIBS_ROOT=${rocm-device-libs.src}"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
# We can't build this target at the moment
|
||||
substituteInPlace libomptarget/DeviceRTL/CMakeLists.txt \
|
||||
--replace "gfx1010" ""
|
||||
|
||||
# No idea what's going on here...
|
||||
cat ${./1000-openmp-failing-tests.list} | xargs -d \\n rm
|
||||
'';
|
||||
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
extraLicenses = [ lib.licenses.mit ];
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
targetName = "polly";
|
||||
targetDir = targetName;
|
||||
|
||||
extraPostPatch = ''
|
||||
# `add_library cannot create target "llvm_gtest" because an imported target with the same name already exists`
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "NOT TARGET gtest" "FALSE"
|
||||
'';
|
||||
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
{ stdenv
|
||||
, callPackage
|
||||
, rocmUpdateScript
|
||||
}:
|
||||
|
||||
callPackage ../base.nix rec {
|
||||
inherit stdenv rocmUpdateScript;
|
||||
buildDocs = false; # No documentation to build
|
||||
buildMan = false; # No man pages to build
|
||||
buildTests = false; # Too many errors
|
||||
targetName = "pstl";
|
||||
targetDir = "runtimes";
|
||||
targetRuntimes = [ targetName ];
|
||||
checkTargets = [ "check-${targetName}" ];
|
||||
}
|
|
@ -0,0 +1,171 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, pkg-config
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, clang-tools-extra
|
||||
, openmp
|
||||
, rocblas
|
||||
, rocmlir
|
||||
, composable_kernel
|
||||
, miopen
|
||||
, protobuf
|
||||
, half
|
||||
, nlohmann_json
|
||||
, msgpack
|
||||
, sqlite
|
||||
, oneDNN_2
|
||||
, blaze
|
||||
, cppcheck
|
||||
, rocm-device-libs
|
||||
, texliveSmall
|
||||
, doxygen
|
||||
, sphinx
|
||||
, docutils
|
||||
, ghostscript
|
||||
, python3Packages
|
||||
, buildDocs ? false
|
||||
, buildTests ? false
|
||||
, gpuTargets ? clr.gpuTargets
|
||||
}:
|
||||
|
||||
let
|
||||
latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [
|
||||
latexmk
|
||||
tex-gyre
|
||||
fncychap
|
||||
wrapfig
|
||||
capt-of
|
||||
framed
|
||||
needspace
|
||||
tabulary
|
||||
varwidth
|
||||
titlesec
|
||||
epstopdf
|
||||
]));
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "migraphx";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "AMDMIGraphX";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-VDYUSpWYAdJ63SKVCO26DVAC3RtZM7otqN0sYUA6DBQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
clang-tools-extra
|
||||
python3Packages.python
|
||||
] ++ lib.optionals buildDocs [
|
||||
latex
|
||||
doxygen
|
||||
sphinx
|
||||
docutils
|
||||
ghostscript
|
||||
python3Packages.sphinx-rtd-theme
|
||||
python3Packages.breathe
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openmp
|
||||
rocblas
|
||||
rocmlir
|
||||
composable_kernel
|
||||
miopen
|
||||
protobuf
|
||||
half
|
||||
nlohmann_json
|
||||
msgpack
|
||||
sqlite
|
||||
oneDNN_2
|
||||
blaze
|
||||
cppcheck
|
||||
python3Packages.pybind11
|
||||
python3Packages.onnx
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DMIGRAPHX_ENABLE_GPU=ON"
|
||||
"-DMIGRAPHX_ENABLE_CPU=ON"
|
||||
"-DMIGRAPHX_ENABLE_FPGA=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"
|
||||
"-DCMAKE_INSTALL_LIBDIR=lib"
|
||||
"-DCMAKE_INSTALL_INCLUDEDIR=include"
|
||||
"-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
];
|
||||
|
||||
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/ROCm/composable_kernel/issues/782
|
||||
substituteInPlace src/targets/gpu/CMakeLists.txt \
|
||||
--replace " COMPONENTS jit_library" "" \
|
||||
--replace " composable_kernel::jit_library" "" \
|
||||
--replace "if(WIN32)" "if(TRUE)"
|
||||
'' + lib.optionalString (!buildDocs) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(doc)" ""
|
||||
'' + lib.optionalString (!buildTests) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(test)" ""
|
||||
'';
|
||||
|
||||
# Unfortunately, it seems like we have to call make on this manually
|
||||
preInstall = lib.optionalString buildDocs ''
|
||||
export HOME=$(mktemp -d)
|
||||
make -j$NIX_BUILD_CORES doc
|
||||
cd ../doc/pdf
|
||||
make -j$NIX_BUILD_CORES
|
||||
cd -
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString buildDocs ''
|
||||
mv ../doc/html $out/share/doc/migraphx
|
||||
mv ../doc/pdf/MIGraphX.pdf $out/share/doc/migraphx
|
||||
'' + lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv bin/test_* $test/bin
|
||||
patchelf $test/bin/test_* --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE"
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "AMD's graph optimization engine";
|
||||
homepage = "https://github.com/ROCm/AMDMIGraphX";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = true;
|
||||
};
|
||||
})
|
|
@ -0,0 +1,234 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, rocmUpdateScript
|
||||
, runCommand
|
||||
, pkg-config
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocblas
|
||||
, rocmlir
|
||||
, clr
|
||||
, clang-tools-extra
|
||||
, clang-ocl
|
||||
, composable_kernel
|
||||
, frugally-deep
|
||||
, rocm-docs-core
|
||||
, half
|
||||
, boost
|
||||
, sqlite
|
||||
, bzip2
|
||||
, lbzip2
|
||||
, nlohmann_json
|
||||
, texliveSmall
|
||||
, doxygen
|
||||
, sphinx
|
||||
, zlib
|
||||
, gtest
|
||||
, rocm-comgr
|
||||
, roctracer
|
||||
, python3Packages
|
||||
, buildDocs ? false # Needs internet because of rocm-docs-core
|
||||
, buildTests ? false
|
||||
}:
|
||||
|
||||
let
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "MIOpen";
|
||||
rev = "rocm-${version}";
|
||||
hash = "sha256-mbOdlSb0ESKi9hMkq3amv70Xkp/YKnZYre24d/y5TD0=";
|
||||
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 (texliveSmall.withPackages (ps: with ps; [
|
||||
latexmk
|
||||
tex-gyre
|
||||
fncychap
|
||||
wrapfig
|
||||
capt-of
|
||||
framed
|
||||
needspace
|
||||
tabulary
|
||||
varwidth
|
||||
titlesec
|
||||
]));
|
||||
|
||||
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";
|
||||
|
||||
# Find zstd and add to target. Mainly for torch.
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://github.com/ROCm/MIOpen/commit/e608b4325646afeabb5e52846997b926d2019d19.patch";
|
||||
hash = "sha256-oxa3qlIC2bzbwGxrQOZXoY/S7CpLsMrnWRB7Og0tk0M=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://github.com/ROCm/MIOpen/commit/3413d2daaeb44b7d6eadcc03033a5954a118491e.patch";
|
||||
hash = "sha256-ST4snUcTmmSI1Ogx815KEX9GdMnmubsavDzXCGJkiKs=";
|
||||
})
|
||||
];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
clang-tools-extra
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocblas
|
||||
rocmlir
|
||||
clang-ocl
|
||||
composable_kernel
|
||||
half
|
||||
boost
|
||||
sqlite
|
||||
bzip2
|
||||
nlohmann_json
|
||||
frugally-deep
|
||||
roctracer
|
||||
] ++ lib.optionals buildDocs [
|
||||
latex
|
||||
doxygen
|
||||
sphinx
|
||||
rocm-docs-core
|
||||
python3Packages.sphinx-rtd-theme
|
||||
python3Packages.breathe
|
||||
python3Packages.myst-parser
|
||||
] ++ lib.optionals buildTests [
|
||||
zlib
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_FLAGS=-Wno-#warnings" # <half> -> <half/half.hpp>
|
||||
"-DUNZIPPER=${bzip2}/bin/bunzip2"
|
||||
# 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"
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DMIOPEN_BACKEND=HIP"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TESTS=ON"
|
||||
"-DMIOPEN_TEST_ALL=ON"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs test src/composable_kernel fin utils install_deps.cmake
|
||||
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--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'
|
||||
|
||||
substituteInPlace test/gtest/CMakeLists.txt \
|
||||
--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 ''
|
||||
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-hip
|
||||
'' + lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv bin/test_* $test/bin
|
||||
patchelf --set-rpath $out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++
|
||||
[ clr rocm-comgr ])} $test/bin/*
|
||||
'';
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Machine intelligence library for ROCm";
|
||||
homepage = "https://github.com/ROCm/MIOpen";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,142 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-device-libs
|
||||
, clr
|
||||
, pkg-config
|
||||
, rpp
|
||||
, rocblas
|
||||
, miopen
|
||||
, migraphx
|
||||
, clang
|
||||
, openmp
|
||||
, protobuf
|
||||
, qtcreator
|
||||
, opencv
|
||||
, ffmpeg
|
||||
, boost
|
||||
, libjpeg_turbo
|
||||
, half
|
||||
, lmdb
|
||||
, rapidjson
|
||||
, rocm-docs-core
|
||||
, python3Packages
|
||||
, useOpenCL ? false
|
||||
, useCPU ? false
|
||||
, buildDocs ? false # Needs internet
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "mivisionx-" + (
|
||||
if (!useOpenCL && !useCPU) then "hip"
|
||||
else if (!useOpenCL && !useCPU) then "opencl"
|
||||
else "cpu"
|
||||
);
|
||||
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "MIVisionX";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-d32lcJq24MXeIWbNbo6putWaol5kF2io6cz4ZuL+DbE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
pkg-config
|
||||
] ++ lib.optionals buildDocs [
|
||||
rocm-docs-core
|
||||
python3Packages.python
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
miopen
|
||||
migraphx
|
||||
rpp
|
||||
rocblas
|
||||
openmp
|
||||
half
|
||||
protobuf
|
||||
qtcreator
|
||||
opencv
|
||||
ffmpeg
|
||||
boost
|
||||
libjpeg_turbo
|
||||
lmdb
|
||||
rapidjson
|
||||
python3Packages.pybind11
|
||||
python3Packages.numpy
|
||||
python3Packages.torchWithRocm
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DROCM_PATH=${clr}"
|
||||
"-DAMDRPP_PATH=${rpp}"
|
||||
# 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"
|
||||
"-DCMAKE_INSTALL_PREFIX_PYTHON=lib"
|
||||
# "-DAMD_FP16_SUPPORT=ON" `error: typedef redefinition with different types ('__half' vs 'half_float::half')`
|
||||
] ++ lib.optionals (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals (!useOpenCL && !useCPU) [
|
||||
"-DBACKEND=HIP"
|
||||
] ++ lib.optionals (useOpenCL && !useCPU) [
|
||||
"-DBACKEND=OCL"
|
||||
] ++ lib.optionals useCPU [
|
||||
"-DBACKEND=CPU"
|
||||
];
|
||||
|
||||
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 rocAL/rocAL_pybind/examples
|
||||
|
||||
# Properly find miopen
|
||||
substituteInPlace amd_openvx_extensions/CMakeLists.txt \
|
||||
--replace "miopen PATHS \''${ROCM_PATH} QUIET" "miopen PATHS ${miopen} QUIET" \
|
||||
--replace "\''${ROCM_PATH}/include/miopen/config.h" "${miopen}/include/miopen/config.h"
|
||||
|
||||
# Properly find turbojpeg
|
||||
substituteInPlace amd_openvx/cmake/FindTurboJpeg.cmake \
|
||||
--replace "\''${TURBO_JPEG_PATH}/include" "${libjpeg_turbo.dev}/include" \
|
||||
--replace "\''${TURBO_JPEG_PATH}/lib" "${libjpeg_turbo.out}/lib"
|
||||
|
||||
# Fix bad paths
|
||||
substituteInPlace rocAL/rocAL/rocAL_hip/CMakeLists.txt amd_openvx_extensions/amd_nn/nn_hip/CMakeLists.txt amd_openvx/openvx/hipvx/CMakeLists.txt \
|
||||
--replace "COMPILER_FOR_HIP \''${ROCM_PATH}/llvm/bin/clang++" "COMPILER_FOR_HIP ${clang}/bin/clang++"
|
||||
'';
|
||||
|
||||
postBuild = lib.optionalString buildDocs ''
|
||||
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en ../docs _build/html
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString (!useOpenCL && !useCPU) ''
|
||||
patchelf $out/lib/rocal_pybind*.so --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE"
|
||||
chmod +x $out/lib/rocal_pybind*.so
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Set of comprehensive computer vision and machine intelligence libraries, utilities, and applications";
|
||||
homepage = "https://github.com/ROCm/MIVisionX";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,91 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-smi
|
||||
, clr
|
||||
, perl
|
||||
, hipify
|
||||
, gtest
|
||||
, chrpath
|
||||
, buildTests ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rccl";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rccl";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-Oyml47yGEB7fALxBcDjqFngS38cnI39sDj94/JV7wE0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
perl
|
||||
hipify
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocm-smi
|
||||
gtest
|
||||
] ++ lib.optionals buildTests [
|
||||
chrpath
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-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"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs src tools
|
||||
|
||||
# Really strange behavior, `#!/usr/bin/env perl` should work...
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "\''$ \''${hipify-perl_executable}" "${perl}/bin/perl ${hipify}/bin/hipify-perl"
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/* $test/bin
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm communication collectives library";
|
||||
homepage = "https://github.com/ROCm/rccl";
|
||||
license = with licenses; [ bsd2 bsd3 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,125 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-smi
|
||||
, rocm-runtime
|
||||
, libcap
|
||||
, grpc
|
||||
, protobuf
|
||||
, openssl
|
||||
, doxygen
|
||||
, graphviz
|
||||
, texliveSmall
|
||||
, gtest
|
||||
, buildDocs ? true
|
||||
, buildTests ? false
|
||||
}:
|
||||
|
||||
let
|
||||
latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [
|
||||
changepage
|
||||
latexmk
|
||||
varwidth
|
||||
multirow
|
||||
hanging
|
||||
adjustbox
|
||||
collectbox
|
||||
stackengine
|
||||
enumitem
|
||||
alphalph
|
||||
wasysym
|
||||
sectsty
|
||||
tocloft
|
||||
newunicodechar
|
||||
etoc
|
||||
helvetic
|
||||
wasy
|
||||
courier
|
||||
]));
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rdc";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rdc";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-QugcajxILmDeQiWG5uAUO41Wut45irg2Ynufgn1bmps=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
protobuf
|
||||
] ++ lib.optionals buildDocs [
|
||||
doxygen
|
||||
graphviz
|
||||
latex
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocm-smi
|
||||
rocm-runtime
|
||||
libcap
|
||||
grpc
|
||||
openssl
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=OFF"
|
||||
"-DRDC_INSTALL_PREFIX=${placeholder "out"}"
|
||||
"-DBUILD_ROCRTEST=ON"
|
||||
"-DRSMI_INC_DIR=${rocm-smi}/include"
|
||||
"-DRSMI_LIB_DIR=${rocm-smi}/lib"
|
||||
"-DGRPC_ROOT=${grpc}"
|
||||
# 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"
|
||||
"-DCMAKE_INSTALL_LIBEXECDIR=libexec"
|
||||
"-DCMAKE_INSTALL_DOCDIR=doc"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_TESTS=ON"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "file(STRINGS /etc/os-release LINUX_DISTRO LIMIT_COUNT 1 REGEX \"NAME=\")" "set(LINUX_DISTRO \"NixOS\")"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
find $out/bin -executable -type f -exec \
|
||||
patchelf {} --shrink-rpath --allowed-rpath-prefixes "$NIX_STORE" \;
|
||||
'' + lib.optionalString buildTests ''
|
||||
mkdir -p $test
|
||||
mv $out/bin/rdctst_tests $test/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Simplifies administration and addresses infrastructure challenges in cluster and datacenter environments";
|
||||
homepage = "https://github.com/ROCm/rdc";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
# broken = versions.minor finalAttrs.version != versions.minor rocm-smi.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
broken = true; # Too many errors, unsure how to fix
|
||||
};
|
||||
})
|
|
@ -0,0 +1,115 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocblas
|
||||
, rocsparse
|
||||
, rocprim
|
||||
, rocrand
|
||||
, clr
|
||||
, git
|
||||
, openmp
|
||||
, openmpi
|
||||
, gtest
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, buildSamples ? false
|
||||
, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900:xnack-" "gfx906:xnack-" ... ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocalution";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"sample"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocALUTION";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-mrN+CI2mqaMi8oKxui7HAIE2qSn50aNaFipkWwYMtbc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
git
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocblas
|
||||
rocsparse
|
||||
rocprim
|
||||
rocrand
|
||||
openmp
|
||||
openmpi
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DROCM_PATH=${clr}"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
"-DSUPPORT_HIP=ON"
|
||||
"-DSUPPORT_OMP=ON"
|
||||
"-DSUPPORT_MPI=ON"
|
||||
"-DBUILD_CLIENTS_SAMPLES=${if buildSamples 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.strings.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildTests [
|
||||
"-DBUILD_CLIENTS_TESTS=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"-DBUILD_CLIENTS_BENCHMARKS=ON"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/rocalution-test $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/rocalution-bench $benchmark/bin
|
||||
'' + lib.optionalString buildSamples ''
|
||||
mkdir -p $sample/bin
|
||||
mv clients/staging/* $sample/bin
|
||||
rm $sample/bin/rocalution-test || true
|
||||
rm $sample/bin/rocalution-bench || true
|
||||
|
||||
patchelf --set-rpath \
|
||||
$out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++ [ clr ])} \
|
||||
$sample/bin/*
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Iterative sparse solvers for ROCm";
|
||||
homepage = "https://github.com/ROCm/rocALUTION";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,209 @@
|
|||
{ rocblas
|
||||
, lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, runCommand
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, python3
|
||||
, tensile
|
||||
, msgpack
|
||||
, libxml2
|
||||
, gtest
|
||||
, gfortran
|
||||
, openmp
|
||||
, amd-blis
|
||||
, python3Packages
|
||||
, buildTensile ? true
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, tensileLogic ? "asm_full"
|
||||
, tensileCOVersion ? "default"
|
||||
, tensileSepArch ? true
|
||||
, tensileLazyLib ? true
|
||||
, tensileLibFormat ? "msgpack"
|
||||
, gpuTargets ? [ "all" ]
|
||||
}:
|
||||
|
||||
let
|
||||
# NOTE: Update the default GPU targets on every update
|
||||
gfx80 = (rocblas.override {
|
||||
gpuTargets = [
|
||||
"gfx803"
|
||||
];
|
||||
}).overrideAttrs { pname = "rocblas-tensile-gfx80"; };
|
||||
|
||||
gfx90 = (rocblas.override {
|
||||
gpuTargets = [
|
||||
"gfx900"
|
||||
"gfx906:xnack-"
|
||||
"gfx908:xnack-"
|
||||
"gfx90a:xnack+"
|
||||
"gfx90a:xnack-"
|
||||
];
|
||||
}).overrideAttrs { pname = "rocblas-tensile-gfx90"; };
|
||||
|
||||
gfx94 = (rocblas.override {
|
||||
gpuTargets = [
|
||||
"gfx940"
|
||||
"gfx941"
|
||||
"gfx942"
|
||||
];
|
||||
}).overrideAttrs { pname = "rocblas-tensile-gfx94"; };
|
||||
|
||||
gfx10 = (rocblas.override {
|
||||
gpuTargets = [
|
||||
"gfx1010"
|
||||
"gfx1012"
|
||||
"gfx1030"
|
||||
];
|
||||
}).overrideAttrs { pname = "rocblas-tensile-gfx10"; };
|
||||
|
||||
gfx11 = (rocblas.override {
|
||||
gpuTargets = [
|
||||
"gfx1100"
|
||||
"gfx1101"
|
||||
"gfx1102"
|
||||
];
|
||||
}).overrideAttrs { pname = "rocblas-tensile-gfx11"; };
|
||||
|
||||
# Unfortunately, we have to do two full builds, otherwise we get overlapping _fallback.dat files
|
||||
fallbacks = rocblas.overrideAttrs { pname = "rocblas-tensile-fallbacks"; };
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocblas";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocBLAS";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-G68d/gvBbTdNx8xR3xY+OkBm5Yxq1NFjxby9BbpOcUk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
python3
|
||||
] ++ lib.optionals buildTensile [
|
||||
msgpack
|
||||
libxml2
|
||||
python3Packages.msgpack
|
||||
python3Packages.joblib
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
gfortran
|
||||
openmp
|
||||
amd-blis
|
||||
] ++ lib.optionals (buildTensile || buildTests || buildBenchmarks) [
|
||||
python3Packages.pyyaml
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-Dpython=python3"
|
||||
"-DAMDGPU_TARGETS=${lib.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/${python3.sitePackages}/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"
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
"-DCMAKE_CXX_FLAGS=-I${amd-blis}/include/blis"
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString (finalAttrs.pname != "rocblas") ''
|
||||
# Return early and install tensile files manually
|
||||
substituteInPlace library/src/CMakeLists.txt \
|
||||
--replace "set_target_properties( TensileHost PROPERTIES OUTPUT_NAME" "return()''\nset_target_properties( TensileHost PROPERTIES OUTPUT_NAME"
|
||||
'' + lib.optionalString (buildTensile && finalAttrs.pname == "rocblas") ''
|
||||
# Link the prebuilt Tensile files
|
||||
mkdir -p build/Tensile/library
|
||||
|
||||
for path in ${gfx80} ${gfx90} ${gfx94} ${gfx10} ${gfx11} ${fallbacks}; do
|
||||
ln -s $path/lib/rocblas/library/* build/Tensile/library
|
||||
done
|
||||
|
||||
unlink build/Tensile/library/TensileManifest.txt
|
||||
'' + lib.optionalString buildTensile ''
|
||||
# Tensile REALLY wants to write to the nix directory if we include it normally
|
||||
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})" ""
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString (finalAttrs.pname == "rocblas") ''
|
||||
ln -sf ${fallbacks}/lib/rocblas/library/TensileManifest.txt $out/lib/rocblas/library
|
||||
'' + lib.optionalString (finalAttrs.pname != "rocblas") ''
|
||||
mkdir -p $out/lib/rocblas/library
|
||||
rm -rf $out/share
|
||||
'' + lib.optionalString (finalAttrs.pname != "rocblas" && finalAttrs.pname != "rocblas-tensile-fallbacks") ''
|
||||
rm Tensile/library/{TensileManifest.txt,*_fallback.dat}
|
||||
mv Tensile/library/* $out/lib/rocblas/library
|
||||
'' + lib.optionalString (finalAttrs.pname == "rocblas-tensile-fallbacks") ''
|
||||
mv Tensile/library/{TensileManifest.txt,*_fallback.dat} $out/lib/rocblas/library
|
||||
'' + lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
cp -a $out/bin/* $test/bin
|
||||
rm $test/bin/*-bench || true
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
cp -a $out/bin/* $benchmark/bin
|
||||
rm $benchmark/bin/*-test || true
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks ) ''
|
||||
rm -rf $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "BLAS implementation for ROCm platform";
|
||||
homepage = "https://github.com/ROCm/rocBLAS";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,111 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, git
|
||||
, rocm-comgr
|
||||
, rocm-runtime
|
||||
, hwdata
|
||||
, texliveSmall
|
||||
, doxygen
|
||||
, graphviz
|
||||
, buildDocs ? true
|
||||
}:
|
||||
|
||||
let
|
||||
latex = lib.optionalAttrs buildDocs (texliveSmall.withPackages (ps: with ps; [
|
||||
changepage
|
||||
latexmk
|
||||
varwidth
|
||||
multirow
|
||||
hanging
|
||||
adjustbox
|
||||
collectbox
|
||||
stackengine
|
||||
enumitem
|
||||
alphalph
|
||||
wasysym
|
||||
sectsty
|
||||
tocloft
|
||||
newunicodechar
|
||||
etoc
|
||||
helvetic
|
||||
wasy
|
||||
courier
|
||||
]));
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocdbgapi";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "ROCdbgapi";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-+CxaTmxRt/RicqQddqIEHs8vvAPCMKXkWg7kbZvnUsQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
git
|
||||
] ++ lib.optionals buildDocs [
|
||||
latex
|
||||
doxygen
|
||||
graphviz
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocm-comgr
|
||||
rocm-runtime
|
||||
hwdata
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DPCI_IDS_PATH=${hwdata}/share/hwdata"
|
||||
# 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"
|
||||
];
|
||||
|
||||
# Unfortunately, it seems like we have to call make on this manually
|
||||
postBuild = lib.optionalString buildDocs ''
|
||||
export HOME=$(mktemp -d)
|
||||
make -j$NIX_BUILD_CORES doc
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
substituteInPlace $out/lib/cmake/amd-dbgapi/amd-dbgapi-config.cmake \
|
||||
--replace "/build/source/build/" ""
|
||||
|
||||
substituteInPlace $out/lib/cmake/amd-dbgapi/amd-dbgapi-targets.cmake \
|
||||
--replace "/build/source/build" "$out"
|
||||
'' + lib.optionalString buildDocs ''
|
||||
mv $out/share/html/amd-dbgapi $doc/share/doc/amd-dbgapi/html
|
||||
rmdir $out/share/html
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Debugger support for control of execution and inspection state";
|
||||
homepage = "https://github.com/ROCm/ROCdbgapi";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,169 @@
|
|||
{ rocfft
|
||||
, lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, clr
|
||||
, python3
|
||||
, rocm-cmake
|
||||
, sqlite
|
||||
, boost
|
||||
, fftw
|
||||
, fftwFloat
|
||||
, gtest
|
||||
, openmp
|
||||
, rocrand
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocfft";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocFFT";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-6Gjsy14GeR08VqnNmFhu8EyYDnQ+VZRlg+u9MAAWfHc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clr
|
||||
python3
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [ sqlite ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-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}"
|
||||
];
|
||||
|
||||
passthru = {
|
||||
test = stdenv.mkDerivation {
|
||||
pname = "${finalAttrs.pname}-test";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/clients/tests";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clr
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
fftw
|
||||
fftwFloat
|
||||
finalAttrs.finalPackage
|
||||
gtest
|
||||
openmp
|
||||
rocrand
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
rm -r "$out/lib/fftw"
|
||||
rmdir "$out/lib"
|
||||
'';
|
||||
};
|
||||
|
||||
benchmark = stdenv.mkDerivation {
|
||||
pname = "${finalAttrs.pname}-benchmark";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/clients/rider";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clr
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
finalAttrs.finalPackage
|
||||
openmp
|
||||
(python3.withPackages (ps: with ps; [
|
||||
pandas
|
||||
scipy
|
||||
]))
|
||||
rocrand
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
cp -a ../../../scripts/perf "$out/bin"
|
||||
'';
|
||||
};
|
||||
|
||||
samples = stdenv.mkDerivation {
|
||||
pname = "${finalAttrs.pname}-samples";
|
||||
inherit (finalAttrs) version src;
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/clients/samples";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clr
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
finalAttrs.finalPackage
|
||||
openmp
|
||||
rocrand
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir "$out"
|
||||
cp -a bin "$out"
|
||||
runHook postInstall
|
||||
'';
|
||||
};
|
||||
|
||||
updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
};
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "FFT implementation for ROCm";
|
||||
homepage = "https://github.com/ROCm/rocFFT";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ kira-bruneau ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,59 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, pkg-config
|
||||
, texinfo
|
||||
, bison
|
||||
, flex
|
||||
, zlib
|
||||
, elfutils
|
||||
, gmp
|
||||
, ncurses
|
||||
, expat
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocgdb";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "ROCgdb";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-XeX/k8gfo9HgcUSIjs35C7IqCmFhvBOqQJSOoPF6HK4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
texinfo # For makeinfo
|
||||
bison
|
||||
flex
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
elfutils
|
||||
gmp
|
||||
ncurses
|
||||
expat
|
||||
];
|
||||
|
||||
# `-Wno-format-nonliteral` doesn't work
|
||||
env.NIX_CFLAGS_COMPILE = "-Wno-error=format-security";
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm source-level debugger for Linux, based on GDB";
|
||||
homepage = "https://github.com/ROCm/ROCgdb";
|
||||
license = with licenses; [ gpl2 gpl3 bsd3 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,35 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-cmake";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocm-cmake";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-qSjWT0KOQ5oDV06tfnKN+H/JzdoOnR9KY0c+SjvDepM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "CMake modules for common build tasks for the ROCm stack";
|
||||
homepage = "https://github.com/ROCm/rocm-cmake";
|
||||
license = licenses.mit;
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.unix;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,55 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-device-libs
|
||||
, libxml2
|
||||
}:
|
||||
|
||||
let
|
||||
llvmNativeTarget =
|
||||
if stdenv.isx86_64 then "X86"
|
||||
else if stdenv.isAarch64 then "AArch64"
|
||||
else throw "Unsupported ROCm LLVM platform";
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-comgr";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "ROCm-CompilerSupport";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-9HuNU/k+kPJMlzqOTM20gm6SAOWJe9tpAZXEj4erdmI=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/lib/comgr";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocm-device-libs
|
||||
libxml2
|
||||
];
|
||||
|
||||
cmakeFlags = [ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86" ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "APIs for compiling and inspecting AMDGPU code objects";
|
||||
homepage = "https://github.com/ROCm/ROCm-CompilerSupport/tree/amd-stg-open/lib/comgr";
|
||||
license = licenses.ncsa;
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,38 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-core";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocm-core";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-sgL1UMt3o01zA8v41dyCG1fAsK/PkTRsHQJOvlNatZ4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
cmakeFlags = [ "-DROCM_VERSION=${finalAttrs.version}" ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
page = "tags?per_page=1";
|
||||
filter = ".[0].name | split(\"-\") | .[1]";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Utility for getting the ROCm release version";
|
||||
homepage = "https://github.com/ROCm/rocm-core";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,43 @@
|
|||
diff --git a/cmake/Packages.cmake b/cmake/Packages.cmake
|
||||
index 07c60eb..c736b3e 100644
|
||||
--- a/cmake/Packages.cmake
|
||||
+++ b/cmake/Packages.cmake
|
||||
@@ -12,24 +12,29 @@ set_target_properties(${target} PROPERTIES
|
||||
IMPORTED_LOCATION \"${target_path}\")")
|
||||
endforeach()
|
||||
configure_file(AMDDeviceLibsConfig.cmake.in
|
||||
- ${PACKAGE_PREFIX}/AMDDeviceLibsConfig.cmake
|
||||
+ lib/cmake/AMDDeviceLibs/AMDDeviceLibsConfig.cmake
|
||||
@ONLY)
|
||||
|
||||
|
||||
set(install_path_suffix "amdgcn/bitcode")
|
||||
|
||||
# Generate the install-tree package.
|
||||
-# We do not know the absolute path to the intall tree until we are installed,
|
||||
-# so we calculate it dynamically in AMD_DEVICE_LIBS_PREFIX_CODE and use
|
||||
-# relative paths in the target imports in AMD_DEVICE_LIBS_TARGET_CODE.
|
||||
-set(AMD_DEVICE_LIBS_PREFIX_CODE "
|
||||
+if(IS_ABSOLUTE "${CMAKE_INSTALL_PREFIX}")
|
||||
+ set(AMD_DEVICE_LIBS_PREFIX_CODE "set(AMD_DEVICE_LIBS_PREFIX \"${CMAKE_INSTALL_PREFIX}\")")
|
||||
+else()
|
||||
+ # We do not know the absolute path to the install tree until we are installed,
|
||||
+ # so we calculate it dynamically in AMD_DEVICE_LIBS_PREFIX_CODE and use
|
||||
+ # relative paths in the target imports in AMD_DEVICE_LIBS_TARGET_CODE.
|
||||
+ set(AMD_DEVICE_LIBS_PREFIX_CODE "
|
||||
# Derive absolute install prefix from config file path.
|
||||
get_filename_component(AMD_DEVICE_LIBS_PREFIX \"\${CMAKE_CURRENT_LIST_FILE}\" PATH)")
|
||||
-string(REGEX REPLACE "/" ";" count "${PACKAGE_PREFIX}")
|
||||
-foreach(p ${count})
|
||||
- set(AMD_DEVICE_LIBS_PREFIX_CODE "${AMD_DEVICE_LIBS_PREFIX_CODE}
|
||||
+ string(REGEX REPLACE "/" ";" count "${PACKAGE_PREFIX}")
|
||||
+ foreach(p ${count})
|
||||
+ set(AMD_DEVICE_LIBS_PREFIX_CODE "${AMD_DEVICE_LIBS_PREFIX_CODE}
|
||||
get_filename_component(AMD_DEVICE_LIBS_PREFIX \"\${AMD_DEVICE_LIBS_PREFIX}\" PATH)")
|
||||
-endforeach()
|
||||
+ endforeach()
|
||||
+endif()
|
||||
+
|
||||
set(AMD_DEVICE_LIBS_TARGET_CODE)
|
||||
foreach(target ${AMDGCN_LIB_LIST})
|
||||
get_target_property(target_name ${target} ARCHIVE_OUTPUT_NAME)
|
|
@ -0,0 +1,50 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, libxml2
|
||||
}:
|
||||
|
||||
let
|
||||
llvmNativeTarget =
|
||||
if stdenv.isx86_64 then "X86"
|
||||
else if stdenv.isAarch64 then "AArch64"
|
||||
else throw "Unsupported ROCm LLVM platform";
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-device-libs";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "ROCm-Device-Libs";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-7XG7oSkJ3EPWTYGea0I50eB1/DPMD5agmjctxZYTbLQ=";
|
||||
};
|
||||
|
||||
patches = [ ./cmake.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [ libxml2 ];
|
||||
cmakeFlags = [ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}" ];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Set of AMD-specific device-side language runtime libraries";
|
||||
homepage = "https://github.com/ROCm/ROCm-Device-Libs";
|
||||
license = licenses.ncsa;
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,66 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, gitUpdater
|
||||
, buildPythonPackage
|
||||
, setuptools
|
||||
, beautifulsoup4
|
||||
, gitpython
|
||||
, pydata-sphinx-theme
|
||||
, pygithub
|
||||
, sphinx
|
||||
, breathe
|
||||
, myst-parser
|
||||
, sphinx-book-theme
|
||||
, sphinx-copybutton
|
||||
, sphinx-design
|
||||
, sphinx-external-toc
|
||||
, sphinx-notfound-page
|
||||
, pyyaml
|
||||
, fastjsonschema
|
||||
}:
|
||||
|
||||
# FIXME: Move to rocmPackages_common
|
||||
buildPythonPackage rec {
|
||||
pname = "rocm-docs-core";
|
||||
version = "0.34.0";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocm-docs-core";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-p75g68Dn0RrjX9vYY+AWNu0qOKTLsBCnOZekMO0Usho=";
|
||||
};
|
||||
|
||||
buildInputs = [ setuptools ];
|
||||
|
||||
propagatedBuildInputs = [
|
||||
beautifulsoup4
|
||||
gitpython
|
||||
pydata-sphinx-theme
|
||||
pygithub
|
||||
sphinx
|
||||
breathe
|
||||
myst-parser
|
||||
sphinx-book-theme
|
||||
sphinx-copybutton
|
||||
sphinx-design
|
||||
sphinx-external-toc
|
||||
sphinx-notfound-page
|
||||
pyyaml
|
||||
fastjsonschema
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "rocm_docs" ];
|
||||
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm Documentation Python package for ReadTheDocs build standardization";
|
||||
homepage = "https://github.com/ROCm/rocm-docs-core";
|
||||
license = with licenses; [ mit cc-by-40 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -0,0 +1,74 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, pkg-config
|
||||
, cmake
|
||||
, xxd
|
||||
, rocm-device-libs
|
||||
, rocm-thunk
|
||||
, libelf
|
||||
, libdrm
|
||||
, numactl
|
||||
, valgrind
|
||||
, libxml2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-runtime";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "ROCR-Runtime";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-xNMG954HI9SOfvYYB/62fhmm9mmR4I10uHP2nqn9EgI=";
|
||||
};
|
||||
|
||||
sourceRoot = "${finalAttrs.src.name}/src";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
xxd
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocm-thunk
|
||||
libelf
|
||||
libdrm
|
||||
numactl
|
||||
valgrind
|
||||
libxml2
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs image/blit_src/create_hsaco_ascii_file.sh
|
||||
patchShebangs core/runtime/trap_handler/create_trap_handler_header.sh
|
||||
patchShebangs core/runtime/blit_shaders/create_blit_shader_header.sh
|
||||
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace 'hsa/include/hsa' 'include/hsa'
|
||||
|
||||
# We compile clang before rocm-device-libs, so patch it in afterwards
|
||||
# Replace object version: https://github.com/ROCm/ROCR-Runtime/issues/166 (TODO: Remove on LLVM update?)
|
||||
substituteInPlace image/blit_src/CMakeLists.txt \
|
||||
--replace '-cl-denorms-are-zero' '-cl-denorms-are-zero --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode' \
|
||||
--replace '-mcode-object-version=4' '-mcode-object-version=5'
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Platform runtime for ROCm";
|
||||
homepage = "https://github.com/ROCm/ROCR-Runtime";
|
||||
license = with licenses; [ ncsa ];
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,89 @@
|
|||
diff --git a/rocm_smi-backward-compat.cmake b/rocm_smi-backward-compat.cmake
|
||||
index aa8fd9c..59afce5 100644
|
||||
--- a/rocm_smi-backward-compat.cmake
|
||||
+++ b/rocm_smi-backward-compat.cmake
|
||||
@@ -72,7 +72,12 @@ function(generate_wrapper_header)
|
||||
set(include_guard "${include_guard}COMGR_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H")
|
||||
#set #include statement
|
||||
get_filename_component(file_name ${header_file} NAME)
|
||||
- set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/${ROCM_SMI}/${file_name}\"\n")
|
||||
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
+ set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+ else()
|
||||
+ set(include_dir "../../../${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+ endif()
|
||||
+ set(include_statements "${include_statements}#include \"${include_dir}/${ROCM_SMI}/${file_name}\"\n")
|
||||
configure_file(${RSMI_WRAPPER_DIR}/header.hpp.in ${RSMI_WRAPPER_INC_DIR}/${file_name})
|
||||
unset(include_guard)
|
||||
unset(include_statements)
|
||||
@@ -90,7 +95,12 @@ function(generate_wrapper_header)
|
||||
set(include_guard "${include_guard}COMGR_WRAPPER_INCLUDE_${INC_GAURD_NAME}_H")
|
||||
#set #include statement
|
||||
get_filename_component(file_name ${header_file} NAME)
|
||||
- set(include_statements "${include_statements}#include \"../../../${CMAKE_INSTALL_INCLUDEDIR}/${OAM_TARGET_NAME}/${file_name}\"\n")
|
||||
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_INCLUDEDIR})
|
||||
+ set(include_dir "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+ else()
|
||||
+ set(include_dir "../../../${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+ endif()
|
||||
+ set(include_statements "${include_statements}#include \"${include_dir}/${OAM_TARGET_NAME}/${file_name}\"\n")
|
||||
configure_file(${RSMI_WRAPPER_DIR}/header.hpp.in ${OAM_WRAPPER_INC_DIR}/${file_name})
|
||||
unset(include_guard)
|
||||
unset(include_statements)
|
||||
@@ -123,11 +133,16 @@ function(create_library_symlink)
|
||||
set(library_files "${LIB_RSMI}")
|
||||
endif()
|
||||
|
||||
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR})
|
||||
+ set(install_libdir "${CMAKE_INSTALL_LIBDIR}")
|
||||
+ else()
|
||||
+ set(install_libdir "../../${CMAKE_INSTALL_LIBDIR}")
|
||||
+ endif()
|
||||
foreach(file_name ${library_files})
|
||||
add_custom_target(link_${file_name} ALL
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
- ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${RSMI_WRAPPER_LIB_DIR}/${file_name})
|
||||
+ ${install_libdir}/${file_name} ${RSMI_WRAPPER_LIB_DIR}/${file_name})
|
||||
endforeach()
|
||||
|
||||
file(MAKE_DIRECTORY ${OAM_WRAPPER_LIB_DIR})
|
||||
@@ -151,11 +166,16 @@ function(create_library_symlink)
|
||||
set(library_files "${LIB_OAM}")
|
||||
endif()
|
||||
|
||||
+ if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBDIR})
|
||||
+ set(install_libdir "${CMAKE_INSTALL_LIBDIR}")
|
||||
+ else()
|
||||
+ set(install_libdir "../../${CMAKE_INSTALL_LIBDIR}")
|
||||
+ endif()
|
||||
foreach(file_name ${library_files})
|
||||
add_custom_target(link_${file_name} ALL
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
- ../../${CMAKE_INSTALL_LIBDIR}/${file_name} ${OAM_WRAPPER_LIB_DIR}/${file_name})
|
||||
+ ${install_libdir}/${file_name} ${OAM_WRAPPER_LIB_DIR}/${file_name})
|
||||
endforeach()
|
||||
|
||||
endfunction()
|
||||
diff --git a/rocm_smi/CMakeLists.txt b/rocm_smi/CMakeLists.txt
|
||||
index c594eeb..d3ed39d 100755
|
||||
--- a/rocm_smi/CMakeLists.txt
|
||||
+++ b/rocm_smi/CMakeLists.txt
|
||||
@@ -105,10 +105,15 @@ endif ()
|
||||
#file reorganization changes
|
||||
#rocm_smi.py moved to libexec/rocm_smi. so creating rocm-smi symlink
|
||||
file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
||||
+if(IS_ABSOLUTE ${CMAKE_INSTALL_LIBEXECDIR})
|
||||
+ set(install_libexecdir "${CMAKE_INSTALL_LIBEXECDIR}")
|
||||
+else()
|
||||
+ set(install_libexecdir "../${CMAKE_INSTALL_LIBEXECDIR}")
|
||||
+endif()
|
||||
add_custom_target(link-rocm-smi ALL
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
COMMAND ${CMAKE_COMMAND} -E create_symlink
|
||||
- ../${CMAKE_INSTALL_LIBEXECDIR}/${ROCM_SMI}/rocm_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi)
|
||||
+ ${install_libexecdir}/${ROCM_SMI}/rocm_smi.py ${CMAKE_CURRENT_BINARY_DIR}/bin/rocm-smi)
|
||||
|
||||
## Add the install directives for the runtime library.
|
||||
install(TARGETS ${ROCM_SMI_TARGET}
|
|
@ -0,0 +1,54 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, wrapPython
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-smi";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocm_smi_lib";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-fS52hpTv1WEycwkGZLXjz383WJWzyk8RvJRshEQSG/A=";
|
||||
};
|
||||
|
||||
patches = [ ./cmake.patch ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
wrapPython
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
# 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"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
wrapPythonProgramsIn $out
|
||||
mv $out/libexec/rocm_smi/.rsmiBindings.py-wrapped $out/libexec/rocm_smi/rsmiBindings.py
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "System management interface for AMD GPUs supported by ROCm";
|
||||
homepage = "https://github.com/ROCm/rocm_smi_lib";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,54 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, pkg-config
|
||||
, cmake
|
||||
, libdrm
|
||||
, numactl
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocm-thunk";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "ROCT-Thunk-Interface";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-F6Qi+A9DuSx2e4WSfp4cnniKr0CkCZcZqsKwQmmZHhk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libdrm
|
||||
numactl
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
# 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"
|
||||
];
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Radeon open compute thunk interface";
|
||||
homepage = "https://github.com/ROCm/ROCT-Thunk-Interface";
|
||||
license = with licenses; [ bsd2 mit ];
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,63 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-runtime
|
||||
, busybox
|
||||
, python3
|
||||
, gnugrep
|
||||
# rocminfo requires that the calling user have a password and be in
|
||||
# the video group. If we let rocm_agent_enumerator rely upon
|
||||
# rocminfo's output, then it, too, has those requirements. Instead,
|
||||
# we can specify the GPU targets for this system (e.g. "gfx803" for
|
||||
# Polaris) such that no system call is needed for downstream
|
||||
# compilers to determine the desired target.
|
||||
, defaultTargets ? []
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
version = "6.0.2";
|
||||
pname = "rocminfo";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocminfo";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
sha256 = "sha256-k0QeCyQcarGbAh4ft8Y7JBK6l2nWxDUc20XoYmtrMMs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
];
|
||||
|
||||
buildInputs = [ rocm-runtime ];
|
||||
propagatedBuildInputs = [ python3 ];
|
||||
cmakeFlags = [ "-DROCRTST_BLD_TYPE=Release" ];
|
||||
|
||||
prePatch = ''
|
||||
patchShebangs rocm_agent_enumerator
|
||||
sed 's,lsmod | grep ,${busybox}/bin/lsmod | ${gnugrep}/bin/grep ,' -i rocminfo.cc
|
||||
'';
|
||||
|
||||
postInstall = lib.optionalString (defaultTargets != [ ]) ''
|
||||
echo '${lib.concatStringsSep "\n" defaultTargets}' > $out/bin/target.lst
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm Application for Reporting System Info";
|
||||
homepage = "https://github.com/ROCm/rocminfo";
|
||||
license = licenses.ncsa;
|
||||
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = stdenv.isAarch64 || versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,136 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocminfo
|
||||
, ninja
|
||||
, clr
|
||||
, git
|
||||
, libxml2
|
||||
, libedit
|
||||
, zstd
|
||||
, zlib
|
||||
, ncurses
|
||||
, 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${suffix}";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals (!buildRockCompiler) [
|
||||
"external"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocMLIR";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-AypY0vL8Ij1zLycwpG2EPWWl4utp4ejXpAK0Jj/UvrA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
ninja
|
||||
clr
|
||||
python3Packages.python
|
||||
python3Packages.tomli
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
git
|
||||
libxml2
|
||||
libedit
|
||||
];
|
||||
|
||||
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_TEST_CHIPSET=gfx000"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs mlir
|
||||
patchShebangs external/llvm-project/mlir/lib/Dialect/GPU/AmdDeviceLibsIncGen.py
|
||||
|
||||
# remove when no longer required
|
||||
substituteInPlace mlir/test/{e2e/generateE2ETest.py,fusion/e2e/generate-fusion-tests.py} \
|
||||
--replace-fail "\"/opt/rocm/bin" "\"${rocminfo}/bin"
|
||||
|
||||
substituteInPlace mlir/utils/performance/common/CMakeLists.txt \
|
||||
--replace-fail "/opt/rocm" "${clr}"
|
||||
'';
|
||||
|
||||
dontBuild = true;
|
||||
doCheck = true;
|
||||
|
||||
# Certain libs aren't being generated, try enabling tests next update
|
||||
checkTarget = if buildRockCompiler
|
||||
then "librockCompiler"
|
||||
else if buildTests
|
||||
then "check-rocmlir"
|
||||
else "check-rocmlir-build-only";
|
||||
|
||||
postInstall = let
|
||||
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
|
||||
patchelf --set-rpath $external/lib:$out/lib:${libPath} $external/lib/*.so*
|
||||
patchelf --set-rpath $out/lib:$external/lib:${libPath} $out/{bin/*,lib/*.so*}
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
page = "tags?per_page=2";
|
||||
filter = ".[1].name | split(\"-\") | .[1]";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "MLIR-based convolution and GEMM kernel generator";
|
||||
homepage = "https://github.com/ROCm/rocMLIR";
|
||||
license = with licenses; [ asl20 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,86 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, gtest
|
||||
, gbenchmark
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocprim";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocPRIM";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-nWvq26qRPZ6Au1rc5cR74TKArcdUFg7O9djFi8SvMeM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = 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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ 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
|
||||
mv $out/bin/rocprim $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/benchmark_* $benchmark/bin
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm parallel primitives";
|
||||
homepage = "https://github.com/ROCm/rocPRIM";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,15 @@
|
|||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index 46efbd5..ca2cc3b 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -127,10 +127,6 @@ function(generate_hsaco TARGET_ID INPUT_FILE OUTPUT_FILE)
|
||||
DEPENDS ${INPUT_FILE} clang
|
||||
COMMENT "Building ${OUTPUT_FILE}..."
|
||||
VERBATIM)
|
||||
- install(
|
||||
- FILES ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
|
||||
- DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/tests-v1
|
||||
- COMPONENT tests)
|
||||
set(HSACO_TARGET_LIST
|
||||
${HSACO_TARGET_LIST} ${PROJECT_BINARY_DIR}/${OUTPUT_FILE}
|
||||
PARENT_SCOPE)
|
|
@ -0,0 +1,109 @@
|
|||
diff --git a/bin/rocprofv2 b/bin/rocprofv2
|
||||
index d0445e7..6079af8 100755
|
||||
--- a/bin/rocprofv2
|
||||
+++ b/bin/rocprofv2
|
||||
@@ -7,7 +7,8 @@ if [ -n "${ROCP_PRELOAD}" ]; then LD_PRELOAD="${ROCP_PRELOAD}"; fi
|
||||
|
||||
CURRENT_DIR="$( dirname -- "$0"; )";
|
||||
ROCPROFV2_DIR=$(dirname -- $(realpath ${BASH_SOURCE[0]}));
|
||||
-ROCM_DIR=$( dirname -- "$ROCPROFV2_DIR"; )
|
||||
+ROCPROFILER_DIR=$( dirname -- "$ROCPROFV2_DIR"; )
|
||||
+ROCM_DIR=@rocmtoolkit_merged@
|
||||
PLUGIN_LIST=("ctf" "perfetto" "file" "att" "cli")
|
||||
RUN_FROM_BUILD=0
|
||||
if [[ $ROCPROFV2_DIR == *"/build"* ]]; then
|
||||
@@ -15,7 +16,7 @@ if [[ $ROCPROFV2_DIR == *"/build"* ]]; then
|
||||
ROCM_DIR=$ROCPROFV2_DIR
|
||||
fi
|
||||
|
||||
-export ROCPROFILER_METRICS_PATH=$ROCM_DIR/libexec/rocprofiler/counters/derived_counters.xml
|
||||
+export ROCPROFILER_METRICS_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/counters/derived_counters.xml
|
||||
export LD_LIBRARY_PATH=$ROCM_DIR/lib:$LD_LIBRARY_PATH
|
||||
|
||||
# Define color code
|
||||
@@ -83,7 +84,7 @@ while [ 1 ]; do
|
||||
exit 1
|
||||
fi
|
||||
elif [[ "$1" == "--list-counters" ]]; then
|
||||
- export LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so
|
||||
+ export LD_PRELOAD=$LD_PRELOAD:$ROC_DIR/lib/rocprofiler/librocprofiler_tool.so
|
||||
eval $ROCM_DIR/libexec/rocprofiler/ctrl
|
||||
exit 1
|
||||
elif [[ "$1" == "-i" || "$1" == "--input" ]]; then
|
||||
@@ -221,7 +222,7 @@ while [ 1 ]; do
|
||||
if [ $RUN_FROM_BUILD == 1 ]; then
|
||||
ATT_PATH=$ROCM_DIR/plugin/att/att/att.py
|
||||
else
|
||||
- ATT_PATH=$ROCM_DIR/libexec/rocprofiler/att/att.py
|
||||
+ ATT_PATH=$ROCPROFILER_DIR/libexec/rocprofiler/att/att.py
|
||||
export ROCPROFV2_ATT_LIB_PATH=$ROCM_DIR/lib/hsa-amd-aqlprofile/librocprofv2_att.so
|
||||
fi
|
||||
ATT_ARGV=$3
|
||||
@@ -294,13 +295,13 @@ if [ -n "$PMC_LINES" ] && [ ! -n "$ATT_ARGV" ]; then
|
||||
export OUTPUT_PATH=$FINAL_PATH
|
||||
fi
|
||||
let COUNTER=COUNTER+1
|
||||
- LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so $*
|
||||
+ LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so $*
|
||||
if [ -n "$OUTPUT_PATH" ]; then
|
||||
echo -e "\nThe output path for the following counters: $OUTPUT_PATH"
|
||||
fi
|
||||
done
|
||||
else
|
||||
- LD_PRELOAD=$LD_PRELOAD:$ROCM_DIR/lib/rocprofiler/librocprofiler_tool.so $*
|
||||
+ LD_PRELOAD=$LD_PRELOAD:$ROCPROFILER_DIR/lib/rocprofiler/librocprofiler_tool.so $*
|
||||
fi
|
||||
|
||||
get_pmc_results_txt_path() {
|
||||
diff --git a/bin/rpl_run.sh b/bin/rpl_run.sh
|
||||
index 6b236ed..a9c233c 100755
|
||||
--- a/bin/rpl_run.sh
|
||||
+++ b/bin/rpl_run.sh
|
||||
@@ -25,16 +25,17 @@
|
||||
ROCPROF_ARGS="$*"
|
||||
time_stamp=`date +%y%m%d_%H%M%S`
|
||||
BIN_DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))
|
||||
-ROOT_DIR=$(dirname $BIN_DIR)
|
||||
+ROCPROFILER_DIR=$(dirname $BIN_DIR)
|
||||
+ROOT_DIR=@rocmtoolkit_merged@
|
||||
RUN_DIR=`pwd`
|
||||
TMP_DIR="/tmp"
|
||||
DATA_DIR="rpl_data_${time_stamp}_$$"
|
||||
|
||||
-RPL_PATH=$ROOT_DIR/lib
|
||||
+RPL_PATH=$ROCPROFILER_DIR/lib
|
||||
TLIB_PATH=$RPL_PATH/rocprofiler
|
||||
TTLIB_PATH=$ROOT_DIR/lib/roctracer
|
||||
ROCM_LIB_PATH=$ROOT_DIR/lib
|
||||
-PROF_BIN_DIR=$ROOT_DIR/libexec/rocprofiler
|
||||
+PROF_BIN_DIR=$ROCPROFILER_DIR/libexec/rocprofiler
|
||||
|
||||
# check if rocprof is supportd on this gpu arch
|
||||
V1_SUPPORTED_GPU_ARCHS=("gfx80x","gfx90x","gfx10xx","gfx94x")
|
||||
@@ -80,7 +81,7 @@ unset ROCP_PROXY_QUEUE
|
||||
# Disable AQL-profile read API
|
||||
export AQLPROFILE_READ_API=0
|
||||
# ROC Profiler package path
|
||||
-export ROCP_PACKAGE_DIR=$ROOT_DIR
|
||||
+export ROCP_PACKAGE_DIR=$ROCPROFILER_DIR
|
||||
# enabled SPM KFD mode
|
||||
export ROCP_SPM_KFD_MODE=1
|
||||
|
||||
@@ -400,7 +401,7 @@ unset_v1_envs() {
|
||||
|
||||
################################################################################################
|
||||
# main
|
||||
-echo "RPL: on '$time_stamp' from '$ROOT_DIR' in '$RUN_DIR'"
|
||||
+echo "RPL: on '$time_stamp' from '$ROCPROFILER_DIR' in '$RUN_DIR'"
|
||||
# Parsing arguments
|
||||
if [ -z "$1" ] ; then
|
||||
usage
|
||||
@@ -633,7 +634,7 @@ elif [ "$input_type" = "txt" -o "$input_type" = "none" ] ; then
|
||||
else
|
||||
echo "<metric></metric>" > $RES_DIR/input.xml
|
||||
fi
|
||||
- input_list=`/bin/ls $RES_DIR/input*.xml`
|
||||
+ input_list=`ls $RES_DIR/input*.xml`
|
||||
export ROCPROFILER_SESS=$RES_DIR
|
||||
else
|
||||
fatal "Bad input file type '$INPUT_FILE'"
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/src/tools/versioning/version.cpp b/src/tools/versioning/version.cpp
|
||||
index 11bdd00..339743c 100644
|
||||
--- a/src/tools/versioning/version.cpp
|
||||
+++ b/src/tools/versioning/version.cpp
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <rocm-core/rocm_version.h>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
+#include <stdint.h>
|
||||
|
||||
|
||||
int main() {
|
|
@ -0,0 +1,140 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, symlinkJoin
|
||||
, substituteAll
|
||||
, cmake
|
||||
, clang
|
||||
, clr
|
||||
, rocm-core
|
||||
, rocm-thunk
|
||||
, rocm-device-libs
|
||||
, roctracer
|
||||
, rocdbgapi
|
||||
, rocm-smi
|
||||
, hsa-amd-aqlprofile-bin
|
||||
, numactl
|
||||
, libpciaccess
|
||||
, libxml2
|
||||
, elfutils
|
||||
, mpi
|
||||
, systemd
|
||||
, gtest
|
||||
, python3Packages
|
||||
, gpuTargets ? clr.gpuTargets
|
||||
}:
|
||||
|
||||
let
|
||||
rocmtoolkit-merged = symlinkJoin {
|
||||
name = "rocmtoolkit-merged";
|
||||
|
||||
paths = [
|
||||
rocm-core
|
||||
rocm-thunk
|
||||
rocm-device-libs
|
||||
roctracer
|
||||
rocdbgapi
|
||||
rocm-smi
|
||||
hsa-amd-aqlprofile-bin
|
||||
clr
|
||||
];
|
||||
|
||||
postBuild = ''
|
||||
rm -rf $out/nix-support
|
||||
'';
|
||||
};
|
||||
in stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocprofiler";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocprofiler";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-yzgw9g5cHAZpdbU44+1ScZyUcZ2I4GGfjbm9GSqCClk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# These just simply won't build
|
||||
./0000-dont-install-tests-hsaco.patch
|
||||
|
||||
# Fix bad paths
|
||||
(substituteAll {
|
||||
src = ./0001-fix-shell-scripts.patch;
|
||||
rocmtoolkit_merged = rocmtoolkit-merged;
|
||||
})
|
||||
|
||||
# Fix for missing uint32_t not defined
|
||||
./0002-include-stdint-in-version.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clang
|
||||
clr
|
||||
python3Packages.lxml
|
||||
python3Packages.cppheaderparser
|
||||
python3Packages.pyyaml
|
||||
python3Packages.barectf
|
||||
python3Packages.pandas
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
numactl
|
||||
libpciaccess
|
||||
libxml2
|
||||
elfutils
|
||||
mpi
|
||||
systemd
|
||||
gtest
|
||||
];
|
||||
|
||||
propagatedBuildInputs = [ rocmtoolkit-merged ];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
"-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
# 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"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
|
||||
substituteInPlace tests-v2/featuretests/profiler/CMakeLists.txt \
|
||||
--replace "--build-id=sha1" "--build-id=sha1 --rocm-path=${clr} --rocm-device-lib-path=${rocm-device-libs}/amdgcn/bitcode"
|
||||
|
||||
substituteInPlace test/CMakeLists.txt \
|
||||
--replace "\''${ROCM_ROOT_DIR}/amdgcn/bitcode" "${rocm-device-libs}/amdgcn/bitcode"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
# Why do these not already have the executable bit set?
|
||||
chmod +x $out/lib/rocprofiler/librocprof-tool.so
|
||||
chmod +x $out/share/rocprofiler/tests-v1/test/ocl/SimpleConvolution
|
||||
|
||||
# Why do these have the executable bit set?
|
||||
chmod -x $out/libexec/rocprofiler/counters/basic_counters.xml
|
||||
chmod -x $out/libexec/rocprofiler/counters/derived_counters.xml
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Profiling with perf-counters and derived metrics";
|
||||
homepage = "https://github.com/ROCm/rocprofiler";
|
||||
license = with licenses; [ mit ]; # mitx11
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,59 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, clr
|
||||
, git
|
||||
, rocdbgapi
|
||||
, elfutils
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocr-debug-agent";
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocr_debug_agent";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-8Q800T7mwBy8/rujVNyCQ0ZpZ9uPKKk+Sv9ibpWou/8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clr
|
||||
git
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocdbgapi
|
||||
elfutils
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_MODULE_PATH=${clr}/lib/cmake/hip"
|
||||
"-DHIP_ROOT_DIR=${clr}"
|
||||
"-DHIP_PATH=${clr}"
|
||||
];
|
||||
|
||||
# Weird install target
|
||||
postInstall = ''
|
||||
rm -rf $out/src
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Library that provides some debugging functionality for ROCr";
|
||||
homepage = "https://github.com/ROCm/rocr_debug_agent";
|
||||
license = with licenses; [ ncsa ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,88 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, clr
|
||||
, gtest
|
||||
, gbenchmark
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocrand";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocRAND";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-BBkcYOP+zh3OQTxuSkeiJizwnE9Gr5Jbhx0e8SU/mmU=";
|
||||
fetchSubmodules = true; # For inline hipRAND
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
gbenchmark
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-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 [
|
||||
"-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
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Generate pseudo-random and quasi-random numbers";
|
||||
homepage = "https://github.com/ROCm/rocRAND";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,100 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocblas
|
||||
, rocsparse
|
||||
, clr
|
||||
, fmt
|
||||
, gtest
|
||||
, gfortran
|
||||
, lapack-reference
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900" "gfx906:xnack-" ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocsolver";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocSOLVER";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-tglQpwCSFABRuEDiJrzQVFIdx9p85E2MiUYN0aoTAXo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
rocblas
|
||||
rocsparse
|
||||
fmt
|
||||
] ++ lib.optionals buildTests [
|
||||
gtest
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
lapack-reference
|
||||
];
|
||||
|
||||
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"
|
||||
"-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 [
|
||||
"-DBUILD_CLIENTS_BENCHMARKS=ON"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/rocsolver-test $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/rocsolver-bench $benchmark/bin
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rmdir $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
requiredSystemFeatures = [ "big-parallel" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm LAPACK implementation";
|
||||
homepage = "https://github.com/ROCm/rocSOLVER";
|
||||
license = with licenses; [ bsd2 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
timeout = 14400; # 4 hours
|
||||
maxSilent = 14400; # 4 hours
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,149 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchzip
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocprim
|
||||
, clr
|
||||
, gfortran
|
||||
, git
|
||||
, gtest
|
||||
, boost
|
||||
, python3Packages
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false # Seems to depend on tests
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocsparse";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocSPARSE";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-nTYnEHkTtq0jBeMj4HXpqkJu8LQc+Z6mpjhMP7tJAHQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
gfortran
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
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 (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ 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 ${finalAttrs.passthru.matrices.matrix-01}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-02}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-03}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-04}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-05}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-06}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-07}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-08}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-09}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-10}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-11}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-12}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-13}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-14}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-15}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-16}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-17}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-18}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-19}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-20}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-21}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-22}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.matrices.matrix-23}/*.mtx matrices
|
||||
ln -s ${finalAttrs.passthru.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
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
matrices = import ./deps.nix {
|
||||
inherit fetchzip;
|
||||
mirror1 = "https://sparse.tamu.edu/MM";
|
||||
mirror2 = "https://www.cise.ufl.edu/research/sparse/MM";
|
||||
};
|
||||
|
||||
updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm SPARSE implementation";
|
||||
homepage = "https://github.com/ROCm/rocSPARSE";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,222 @@
|
|||
{ 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"
|
||||
];
|
||||
};
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocprim
|
||||
, clr
|
||||
, gtest
|
||||
, buildTests ? false
|
||||
, buildBenchmarks ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocthrust";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocThrust";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-Zk7FxcedaDUbx9RCX8aWN0xZO/B5cOs/l5MDqZKQpJo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
rocprim
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals buildTests [
|
||||
gtest
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-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 [
|
||||
"-DBUILD_BENCHMARKS=ON"
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
"-DCMAKE_CXX_FLAGS=-Wno-deprecated-builtins" # Too much spam
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/{test_*,*.hip} $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/benchmark_* $benchmark/bin
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
rm -rf $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "ROCm parallel algorithm library";
|
||||
homepage = "https://github.com/ROCm/rocThrust";
|
||||
license = with licenses; [ asl20 ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,103 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, clr
|
||||
, rocm-device-libs
|
||||
, libxml2
|
||||
, doxygen
|
||||
, graphviz
|
||||
, gcc-unwrapped
|
||||
, libbacktrace
|
||||
, rocm-runtime
|
||||
, python3Packages
|
||||
, buildDocs ? false # Nothing seems to be generated, so not making the output
|
||||
, buildTests ? false
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "roctracer";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals buildDocs [
|
||||
"doc"
|
||||
] ++ lib.optionals buildTests [
|
||||
"test"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "roctracer";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-a6/N6W3JXVI0VZRGxlS3cVENC3VTP1w9UFnd0+EWAuo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
clr
|
||||
] ++ lib.optionals buildDocs [
|
||||
doxygen
|
||||
graphviz
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
libxml2
|
||||
libbacktrace
|
||||
python3Packages.python
|
||||
python3Packages.cppheaderparser
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_MODULE_PATH=${clr}/hip/cmake"
|
||||
# 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"
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString [
|
||||
# Needed with GCC 12
|
||||
"-Wno-error=array-bounds"
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
export HIP_DEVICE_LIB_PATH=${rocm-device-libs}/amdgcn/bitcode
|
||||
'' + lib.optionalString (!buildTests) ''
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "add_subdirectory(test)" ""
|
||||
'';
|
||||
|
||||
# Tests always fail, probably need GPU
|
||||
# doCheck = buildTests;
|
||||
|
||||
postInstall = lib.optionalString buildDocs ''
|
||||
mkdir -p $doc
|
||||
'' + lib.optionalString buildTests ''
|
||||
mkdir -p $test/bin
|
||||
# Not sure why this is an install target
|
||||
find $out/test -executable -type f -exec mv {} $test/bin \;
|
||||
rm $test/bin/{*.sh,*.py}
|
||||
patchelf --set-rpath $out/lib:${lib.makeLibraryPath (
|
||||
finalAttrs.buildInputs ++ [ clr gcc-unwrapped.lib rocm-runtime ])} $test/bin/*
|
||||
rm -rf $out/test
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Tracer callback/activity library";
|
||||
homepage = "https://github.com/ROCm/roctracer";
|
||||
license = with licenses; [ mit ]; # mitx11
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor clr.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,35 @@
|
|||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index 0d00883..86ce282 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -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 )
|
||||
|
||||
-# Test/benchmark requires additional dependencies
|
||||
-include( FetchContent )
|
||||
-
|
||||
-FetchContent_Declare(
|
||||
- googletest
|
||||
- GIT_REPOSITORY https://github.com/google/googletest.git
|
||||
- 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)
|
|
@ -0,0 +1,105 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-smi
|
||||
, clr
|
||||
, openmp
|
||||
, gtest
|
||||
, rocblas
|
||||
, 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+" ... ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rocwmma";
|
||||
version = "6.0.2";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
"test"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"benchmark"
|
||||
] ++ lib.optionals buildSamples [
|
||||
"sample"
|
||||
];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rocWMMA";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-vbC4OuCmEpD38lVq0uXNw86iS4KkL6isOVq6vmlu1oM=";
|
||||
};
|
||||
|
||||
patches = lib.optionals (buildTests || buildBenchmarks) [
|
||||
./0000-dont-fetch-googletest.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openmp
|
||||
] ++ lib.optionals (buildTests || buildBenchmarks) [
|
||||
rocm-smi
|
||||
gtest
|
||||
rocblas
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DROCWMMA_BUILD_TESTS=${if buildTests || buildBenchmarks then "ON" else "OFF"}"
|
||||
"-DROCWMMA_BUILD_SAMPLES=${if buildSamples 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 (gpuTargets != [ ]) [
|
||||
"-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals buildExtendedTests [
|
||||
"-DROCWMMA_BUILD_EXTENDED_TESTS=ON"
|
||||
] ++ lib.optionals buildBenchmarks [
|
||||
"-DROCWMMA_BUILD_BENCHMARK_TESTS=ON"
|
||||
"-DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON"
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString (buildTests || buildBenchmarks) ''
|
||||
mkdir -p $test/bin
|
||||
mv $out/bin/{*_test,*-validate} $test/bin
|
||||
'' + lib.optionalString buildBenchmarks ''
|
||||
mkdir -p $benchmark/bin
|
||||
mv $out/bin/*-bench $benchmark/bin
|
||||
'' + lib.optionalString buildSamples ''
|
||||
mkdir -p $sample/bin
|
||||
mv $out/bin/sgemmv $sample/bin
|
||||
mv $out/bin/simple_gemm $sample/bin
|
||||
mv $out/bin/simple_dlrm $sample/bin
|
||||
'' + lib.optionalString (buildTests || buildBenchmarks || buildSamples) ''
|
||||
rm -rf $out/bin
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Mixed precision matrix multiplication and accumulation";
|
||||
homepage = "https://github.com/ROCm/rocWMMA";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,88 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, cmake
|
||||
, rocm-cmake
|
||||
, rocm-docs-core
|
||||
, half
|
||||
, clr
|
||||
, openmp
|
||||
, boost
|
||||
, python3Packages
|
||||
, buildDocs ? false # Needs internet
|
||||
, useOpenCL ? false
|
||||
, useCPU ? false
|
||||
, gpuTargets ? [ ]
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rpp-" + (
|
||||
if (!useOpenCL && !useCPU) then "hip"
|
||||
else if (!useOpenCL && !useCPU) then "opencl"
|
||||
else "cpu"
|
||||
);
|
||||
|
||||
version = "6.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "rpp";
|
||||
rev = "rocm-${finalAttrs.version}";
|
||||
hash = "sha256-AquAVoEqlsBVxd41hG2sVo9UoSS+255eCQzIfGkC/Tk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
rocm-cmake
|
||||
clr
|
||||
] ++ lib.optionals buildDocs [
|
||||
rocm-docs-core
|
||||
python3Packages.python
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
half
|
||||
openmp
|
||||
boost
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DROCM_PATH=${clr}"
|
||||
] ++ lib.optionals (gpuTargets != [ ]) [
|
||||
"-DAMDGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
|
||||
] ++ lib.optionals (!useOpenCL && !useCPU) [
|
||||
"-DCMAKE_C_COMPILER=hipcc"
|
||||
"-DCMAKE_CXX_COMPILER=hipcc"
|
||||
"-DBACKEND=HIP"
|
||||
] ++ lib.optionals (useOpenCL && !useCPU) [
|
||||
"-DBACKEND=OCL"
|
||||
] ++ lib.optionals useCPU [
|
||||
"-DBACKEND=CPU"
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString (!useOpenCL && !useCPU) ''
|
||||
# Bad path
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace "COMPILER_FOR_HIP \''${ROCM_PATH}/llvm/bin/clang++" "COMPILER_FOR_HIP ${clr}/bin/hipcc"
|
||||
'';
|
||||
|
||||
postBuild = lib.optionalString buildDocs ''
|
||||
python3 -m sphinx -T -E -b html -d _build/doctrees -D language=en ../docs _build/html
|
||||
'';
|
||||
|
||||
passthru.updateScript = rocmUpdateScript {
|
||||
name = finalAttrs.pname;
|
||||
owner = finalAttrs.src.owner;
|
||||
repo = finalAttrs.src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Comprehensive high-performance computer vision library for AMD processors";
|
||||
homepage = "https://github.com/ROCm/rpp";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor finalAttrs.version != versions.minor stdenv.cc.version || versionAtLeast finalAttrs.version "7.0.0";
|
||||
};
|
||||
})
|
|
@ -0,0 +1,65 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, rocmUpdateScript
|
||||
, buildPythonPackage
|
||||
, pytestCheckHook
|
||||
, setuptools
|
||||
, pyyaml
|
||||
, msgpack
|
||||
, pandas
|
||||
, joblib
|
||||
, filelock
|
||||
, rocminfo
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "tensile";
|
||||
version = "6.0.2";
|
||||
format = "pyproject";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ROCm";
|
||||
repo = "Tensile";
|
||||
rev = "rocm-${version}";
|
||||
hash = "sha256-B9/2Iw1chwDL6it1CKC8W8v4Qac/J2z9nwlpwjnllDc=";
|
||||
};
|
||||
|
||||
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;
|
||||
repo = src.repo;
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "GEMMs and tensor contractions";
|
||||
homepage = "https://github.com/ROCm/Tensile";
|
||||
license = with licenses; [ mit ];
|
||||
maintainers = teams.rocm.members;
|
||||
platforms = platforms.linux;
|
||||
broken = versions.minor version != versions.minor stdenv.cc.version || versionAtLeast version "7.0.0";
|
||||
};
|
||||
}
|
|
@ -0,0 +1,33 @@
|
|||
{ lib
|
||||
, writeScript
|
||||
}:
|
||||
|
||||
{ name ? ""
|
||||
, owner ? ""
|
||||
, repo ? ""
|
||||
, page ? "releases/latest"
|
||||
, filter ? ".tag_name | split(\"-\") | .[1]"
|
||||
}:
|
||||
|
||||
let
|
||||
pname =
|
||||
if lib.hasPrefix "rocm-llvm-" name
|
||||
then "llvm.${lib.removePrefix "rocm-llvm-" name}"
|
||||
else name;
|
||||
|
||||
updateScript = writeScript "update.sh" ''
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl jq common-updater-scripts
|
||||
version="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
|
||||
-sL "https://api.github.com/repos/${owner}/${repo}/${page}" | jq '${filter}' --raw-output)"
|
||||
|
||||
IFS='.' read -a version_arr <<< "$version"
|
||||
|
||||
if (( ''${version_arr[0]} > 6 )); then
|
||||
echo "'rocmPackages_6.${pname}' is already at it's maximum allowed version.''\nAny further upgrades should go into 'rocmPackages_X.${pname}'." 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
update-source-version rocmPackages_6.${pname} "$version" --ignore-same-hash
|
||||
'';
|
||||
in [ updateScript ]
|
|
@ -7699,8 +7699,9 @@ with pkgs;
|
|||
|
||||
rar2fs = callPackage ../tools/filesystems/rar2fs { };
|
||||
|
||||
rocmPackages = rocmPackages_5;
|
||||
rocmPackages = rocmPackages_6;
|
||||
rocmPackages_5 = recurseIntoAttrs (callPackage ../development/rocm-modules/5 { });
|
||||
rocmPackages_6 = recurseIntoAttrs (callPackage ../development/rocm-modules/6 { });
|
||||
|
||||
rune = callPackage ../development/interpreters/rune { };
|
||||
|
||||
|
|
Loading…
Reference in New Issue