Merge pull request #206421 from Madouura/pr/rocm-related

This commit is contained in:
Bernardo Meurer 2022-12-19 20:49:41 -03:00 committed by GitHub
commit 5b18bcaf81
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
52 changed files with 2249 additions and 770 deletions

View file

@ -138,6 +138,17 @@
or configure your firewall.
</para>
</listitem>
<listitem>
<para>
<literal>llvmPackages_rocm.llvm</literal> will not contain
<literal>clang</literal> or <literal>compiler-rt</literal>.
<literal>llvmPackages_rocm.clang</literal> will not contain
<literal>llvm</literal>.
<literal>llvmPackages_rocm.clangNoCompilerRt</literal> has
been removed in favor of using
<literal>llvmPackages_rocm.clang-unwrapped</literal>.
</para>
</listitem>
<listitem>
<para>
The EC2 image module previously detected and automatically
@ -286,6 +297,13 @@
option.
</para>
</listitem>
<listitem>
<para>
<literal>hip</literal> has been separated into
<literal>hip</literal>, <literal>hip-common</literal> and
<literal>hipcc</literal>.
</para>
</listitem>
<listitem>
<para>
Resilio sync secret keys can now be provided using a secrets

View file

@ -43,6 +43,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- The [services.unifi-video.openFirewall](#opt-services.unifi-video.openFirewall) module option default value has been changed from `true` to `false`. You will need to explicitly set this option to `true`, or configure your firewall.
- `llvmPackages_rocm.llvm` will not contain `clang` or `compiler-rt`. `llvmPackages_rocm.clang` will not contain `llvm`. `llvmPackages_rocm.clangNoCompilerRt` has been removed in favor of using `llvmPackages_rocm.clang-unwrapped`.
- The EC2 image module previously detected and automatically mounted ext3-formatted instance store devices and partitions in stage-1 (initramfs), storing `/tmp` on the first discovered device. This behaviour, which only catered to very specific use cases and could not be disabled, has been removed. Users relying on this should provide their own implementation, and probably use ext4 and perform the mount in stage-2.
- The EC2 image module previously detected and activated swap-formatted instance store devices and partitions in stage-1 (initramfs). This behaviour has been removed. Users relying on this should provide their own implementation.
@ -82,6 +84,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- Enabling global redirect in `services.nginx.virtualHosts` now allows one to add exceptions with the `locations` option.
- `hip` has been separated into `hip`, `hip-common` and `hipcc`.
- Resilio sync secret keys can now be provided using a secrets file at runtime, preventing these secrets from ending up in the Nix store.
- The `services.fwupd` module now allows arbitrary daemon settings to be configured in a structured manner ([`services.fwupd.daemonSettings`](#opt-services.fwupd.daemonSettings)).

View file

@ -0,0 +1,129 @@
diff --git a/bin/hipcc.pl b/bin/hipcc.pl
index da9559b..7aaa540 100755
--- a/bin/hipcc.pl
+++ b/bin/hipcc.pl
@@ -185,7 +185,7 @@ if ($HIP_PLATFORM eq "amd") {
chomp($HIP_CLANG_TARGET);
if (! defined $HIP_CLANG_INCLUDE_PATH) {
- $HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include");
+ $HIP_CLANG_INCLUDE_PATH = abs_path("@clang@/resource-root/include");
}
if (! defined $HIP_INCLUDE_PATH) {
$HIP_INCLUDE_PATH = "$HIP_PATH/include";
@@ -206,8 +206,8 @@ if ($HIP_PLATFORM eq "amd") {
print ("HIP_CLANG_TARGET=$HIP_CLANG_TARGET\n");
}
- $HIPCXXFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\"";
- $HIPCFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH/..\"";
+ $HIPCXXFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH\"";
+ $HIPCFLAGS .= " -isystem \"$HIP_CLANG_INCLUDE_PATH\"";
$HIPLDFLAGS .= " -L\"$HIP_LIB_PATH\"";
if ($isWindows) {
$HIPLDFLAGS .= " -lamdhip64";
@@ -625,7 +625,7 @@ if($HIP_PLATFORM eq "amd"){
$targetsStr = $ENV{HCC_AMDGPU_TARGET};
} elsif (not $isWindows) {
# Else try using rocm_agent_enumerator
- $ROCM_AGENT_ENUM = "${ROCM_PATH}/bin/rocm_agent_enumerator";
+ $ROCM_AGENT_ENUM = "@rocminfo@/bin/rocm_agent_enumerator";
$targetsStr = `${ROCM_AGENT_ENUM} -t GPU`;
$targetsStr =~ s/\n/,/g;
}
@@ -724,16 +724,16 @@ if ($HIP_PLATFORM eq "amd") {
if (not $isWindows and not $compileOnly) {
if ($linkType eq 0) {
- $toolArgs = " -L$HIP_LIB_PATH -lamdhip64 -L$ROCM_PATH/lib -lhsa-runtime64 -ldl -lnuma " . ${toolArgs};
+ $toolArgs = " -L$HIP_LIB_PATH -lamdhip64 -L@rocm_runtime@/lib -lhsa-runtime64 -ldl -lnuma " . ${toolArgs};
} else {
$toolArgs = ${toolArgs} . " -Wl,-rpath=$HIP_LIB_PATH:$ROCM_PATH/lib -lamdhip64 ";
}
# To support __fp16 and _Float16, explicitly link with compiler-rt
- $HIP_CLANG_BUILTIN_LIB="$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a";
+ $HIP_CLANG_BUILTIN_LIB="@clang@/resource-root/lib/$HIP_CLANG_TARGET/libclang_rt.builtins.a";
if (-e $HIP_CLANG_BUILTIN_LIB) {
- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/$HIP_CLANG_TARGET -lclang_rt.builtins "
+ $toolArgs .= " -L@clang@/resource-root/lib/$HIP_CLANG_TARGET -lclang_rt.builtins "
} else {
- $toolArgs .= " -L$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/lib/linux -lclang_rt.builtins-x86_64 "
+ $toolArgs .= " -L@clang@/resource-root/lib/linux -lclang_rt.builtins-x86_64 "
}
}
}
diff --git a/bin/hipconfig.pl b/bin/hipconfig.pl
index 5ddb8e9..6a76a2e 100755
--- a/bin/hipconfig.pl
+++ b/bin/hipconfig.pl
@@ -77,7 +77,7 @@ if ($HIP_COMPILER eq "clang") {
$CPP_CONFIG = " -D__HIP_PLATFORM_HCC__= -D__HIP_PLATFORM_AMD__=";
$HIP_PATH_INCLUDE = $HIP_PATH."/include";
- $HIP_CLANG_INCLUDE = $HIP_CLANG_PATH."/../lib/clang/".$HIP_CLANG_VERSION;
+ $HIP_CLANG_INCLUDE = "@clang@/resource-root/include";
if($isWindows) {
$CPP_CONFIG .= " -I\"$HIP_PATH_INCLUDE\" -I\"$HIP_CLANG_INCLUDE\"";
} else {
@@ -168,7 +168,7 @@ if (!$printed or $p_full) {
print ("HIP_CLANG_PATH : $HIP_CLANG_PATH\n");
if ($isWindows) {
system("\"$HIP_CLANG_PATH/clang++\" --version");
- system("\"$HIP_CLANG_PATH/llc\" --version");
+ system("\"@llvm@/bin/llc\" --version");
printf("hip-clang-cxxflags : ");
$win_output = `perl \"$HIP_PATH/bin/hipcc\" --cxxflags`;
printf("$win_output \n");
@@ -177,7 +177,7 @@ if (!$printed or $p_full) {
printf("$win_output \n");
} else {
system("$HIP_CLANG_PATH/clang++ --version");
- system("$HIP_CLANG_PATH/llc --version");
+ system("@llvm@/bin/llc --version");
print ("hip-clang-cxxflags : ");
system("$HIP_PATH/bin/hipcc --cxxflags");
printf("\n");
@@ -219,8 +219,8 @@ if (!$printed or $p_full) {
system ("uname -a");
}
- if (-e "/usr/bin/lsb_release") {
- system ("/usr/bin/lsb_release -a");
+ if (-e "@lsb_release@/bin/lsb_release") {
+ system ("@lsb_release@/bin/lsb_release -a");
}
print "\n" ;
diff --git a/hip-lang-config.cmake.in b/hip-lang-config.cmake.in
index 9250a68..f6e27b7 100644
--- a/hip-lang-config.cmake.in
+++ b/hip-lang-config.cmake.in
@@ -71,8 +71,8 @@ get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH)
#need _IMPORT_PREFIX to be set #FILE_REORG_BACKWARD_COMPATIBILITY
-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "${_IMPORT_PREFIX}/../llvm/lib/clang/*/include")
-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "${_IMPORT_PREFIX}/llvm/lib/clang/*/include")
+file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "@clang@/resource-root/include")
+file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "@clang@/resource-root/include")
find_path(HIP_CLANG_INCLUDE_PATH __clang_cuda_math.h
HINTS ${HIP_CLANG_INCLUDE_SEARCH_PATHS}
${HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG}
@@ -89,7 +89,7 @@ find_path(HSA_HEADER hsa/hsa.h
PATHS
"${_IMPORT_PREFIX}/../include" #FILE_REORG_BACKWARD_COMPATIBILITY
"${_IMPORT_PREFIX}/include"
- "${ROCM_PATH}/include"
+ "@rocm_runtime@/include"
)
if (NOT HSA_HEADER)
@@ -97,7 +97,7 @@ if (NOT HSA_HEADER)
endif()
get_filename_component(HIP_COMPILER_INSTALL_PATH ${CMAKE_HIP_COMPILER} DIRECTORY)
-file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_COMPILER_INSTALL_PATH}/../lib/clang/*/lib/*")
+file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "@clang@/resource-root/lib/*")
find_library(CLANGRT_BUILTINS
NAMES
clang_rt.builtins

View file

@ -0,0 +1,59 @@
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, substituteAll
, llvm
, rocm-runtime
, rocminfo
, lsb-release
}:
stdenv.mkDerivation (finalAttrs: {
pname = "hip-common";
version = "5.4.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "HIP";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-JpHWTsR2Z8pXp1gNjO29pDYvH/cJvd5Dlpeig33UD28=";
};
patches = [
(substituteAll {
src = ./0000-fixup-paths.patch;
inherit llvm rocminfo;
clang = stdenv.cc;
rocm_runtime = rocm-runtime;
lsb_release = lsb-release;
})
];
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-Developer-Tools/HIP";
license = with licenses; [ mit ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -0,0 +1,62 @@
diff --git a/hip-config.cmake.in b/hip-config.cmake.in
index 89d1224..dc9ba05 100755
--- a/hip-config.cmake.in
+++ b/hip-config.cmake.in
@@ -142,7 +142,7 @@ if(HIP_COMPILER STREQUAL "clang")
file(TO_CMAKE_PATH "${HIP_PATH}/../lc" HIP_CLANG_ROOT)
endif()
else()
- set(HIP_CLANG_ROOT "${ROCM_PATH}/llvm")
+ set(HIP_CLANG_ROOT "@clang@")
endif()
if(NOT HIP_CXX_COMPILER)
set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER})
@@ -171,7 +171,7 @@ if(HIP_COMPILER STREQUAL "clang")
get_filename_component(_HIP_CLANG_BIN_PATH "${_HIP_CLANG_REAL_PATH}" DIRECTORY)
get_filename_component(HIP_CLANG_ROOT "${_HIP_CLANG_BIN_PATH}" DIRECTORY)
endif()
- file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS ${HIP_CLANG_ROOT}/lib/clang/*/include)
+ file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "@clang@/resource-root/include")
find_path(HIP_CLANG_INCLUDE_PATH stddef.h
HINTS
${HIP_CLANG_INCLUDE_SEARCH_PATHS}
@@ -209,7 +209,7 @@ if(NOT WIN32)
"${_IMPORT_PREFIX}/include"
#FILE_REORG_BACKWARD_COMPATIBILITY ${_IMPORT_PREFIX}/../include is for Backward compatibility
"${_IMPORT_PREFIX}/../include"
- ${ROCM_PATH}/include
+ "@rocm_runtime@/include"
)
if (NOT HSA_HEADER)
@@ -291,7 +291,7 @@ if(HIP_COMPILER STREQUAL "clang")
endif()
endif()
- file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_CLANG_ROOT}/lib/clang/*/lib/*")
+ file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "@clang@/resource-root/lib/*")
find_library(CLANGRT_BUILTINS
NAMES
clang_rt.builtins
diff --git a/src/hip_embed_pch.sh b/src/hip_embed_pch.sh
index 0a1572b..2feb19a 100755
--- a/src/hip_embed_pch.sh
+++ b/src/hip_embed_pch.sh
@@ -149,7 +149,7 @@ EOF
$LLVM_DIR/bin/clang -cc1 -O3 -emit-pch -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -fcuda-is-device -std=c++17 -fgnuc-version=4.2.1 -o $tmp/hip_wave64.pch -x hip-cpp-output - <$tmp/pch_wave64.cui &&
- $LLVM_DIR/bin/llvm-mc -o hip_pch.o $tmp/hip_pch.mcin --filetype=obj &&
+ @llvm@/bin/llvm-mc -o hip_pch.o $tmp/hip_pch.mcin --filetype=obj &&
rm -rf $tmp
}
@@ -195,7 +195,7 @@ EOF
set -x
$LLVM_DIR/bin/clang -O3 --rocm-path=$HIP_INC_DIR/.. -std=c++14 -nogpulib --hip-version=4.4 -isystem $HIP_INC_DIR -isystem $HIP_BUILD_INC_DIR -isystem $HIP_AMD_INC_DIR --cuda-device-only -D__HIPCC_RTC__ -x hip $tmp/hipRTC_header.h -E -o $tmp/hiprtc &&
cat $macroFile >> $tmp/hiprtc &&
- $LLVM_DIR/bin/llvm-mc -o $tmp/hiprtc_header.o $tmp/hipRTC_header.mcin --filetype=obj &&
+ @llvm@/bin/llvm-mc -o $tmp/hiprtc_header.o $tmp/hipRTC_header.mcin --filetype=obj &&
$LLVM_DIR/bin/clang $tmp/hiprtc_header.o -o $rtc_shared_lib_out -shared &&
$LLVM_DIR/bin/clang -O3 --rocm-path=$HIP_INC_DIR/.. -std=c++14 -nogpulib -nogpuinc -emit-llvm -c -o $tmp/tmp.bc --cuda-device-only -D__HIPCC_RTC__ --offload-arch=gfx906 -x hip-cpp-output $tmp/hiprtc &&
rm -rf $tmp

View file

@ -1,113 +1,61 @@
{ stdenv
, binutils-unwrapped
, clang
, cmake
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, file
, lib
, libglvnd
, libX11
, libxml2
, llvm
, rocmUpdateScript
, substituteAll
, makeWrapper
, numactl
, perl
, python3
, python3Packages
, hip-common
, hipcc
, rocclr
, roctracer
, cmake
, perl
, llvm
, rocminfo
, rocm-thunk
, rocm-comgr
, rocm-device-libs
, rocm-opencl-runtime
, rocm-runtime
, rocm-thunk
, rocminfo
, substituteAll
, writeScript
, writeText
, rocm-opencl-runtime
, cudatoolkit
, numactl
, libxml2
, libX11
, libglvnd
, doxygen
, graphviz
, fontconfig
, python3Packages
, buildDocs ? true
, buildTests ? false
, useNVIDIA ? false
}:
let
hip = stdenv.mkDerivation (finalAttrs: {
pname = "hip";
version = "5.4.0";
hipPlatform = if useNVIDIA then "nvidia" else "amd";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "HIP";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-34SJM2n3jZWIS2uwpboWOXVFhaVWGK5ELPKD/cJc1zw=";
};
wrapperArgs = [
"--prefix PATH : $out/bin"
"--prefix LD_LIBRARY_PATH : ${rocm-runtime}"
"--set HIP_PLATFORM ${hipPlatform}"
"--set HIP_PATH $out"
"--set HIP_CLANG_PATH ${stdenv.cc}/bin"
"--set DEVICE_LIB_PATH ${rocm-device-libs}/amdgcn/bitcode"
"--set HSA_PATH ${rocm-runtime}"
"--set ROCM_PATH $out"
] ++ lib.optionals useNVIDIA [
"--set CUDA_PATH ${cudatoolkit}"
];
in stdenv.mkDerivation (finalAttrs: {
pname = "hip-${hipPlatform}";
version = "5.4.1";
patches = [
(substituteAll {
src = ./hip-config-paths.patch;
inherit llvm;
rocm_runtime = rocm-runtime;
})
];
# - fix bash paths
# - fix path to rocm_agent_enumerator
# - fix hcc path
# - fix hcc version parsing
# - add linker flags for libhsa-runtime64 and hc_am since libhip_hcc
# refers to them.
prePatch = ''
for f in $(find bin -type f); do
sed -e 's,#!/usr/bin/perl,#!${perl}/bin/perl,' \
-e 's,#!/bin/bash,#!${stdenv.shell},' \
-i "$f"
done
sed 's,#!/usr/bin/python,#!${python3.interpreter},' -i hip_prof_gen.py
sed -e 's,$ROCM_AGENT_ENUM = "''${ROCM_PATH}/bin/rocm_agent_enumerator";,$ROCM_AGENT_ENUM = "${rocminfo}/bin/rocm_agent_enumerator";,' \
-e 's,^\($DEVICE_LIB_PATH=\).*$,\1"${rocm-device-libs}/amdgcn/bitcode";,' \
-e 's,^\($HIP_COMPILER=\).*$,\1"clang";,' \
-e 's,^\($HIP_RUNTIME=\).*$,\1"ROCclr";,' \
-e 's,^\([[:space:]]*$HSA_PATH=\).*$,\1"${rocm-runtime}";,'g \
-e 's,^\([[:space:]]*\)$HIP_CLANG_INCLUDE_PATH = abs_path("$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION/include");,\1$HIP_CLANG_INCLUDE_PATH = "${llvm}/lib/clang/$HIP_CLANG_VERSION/include";,' \
-e 's,^\([[:space:]]*$HIPCXXFLAGS .= " -isystem \\"$HIP_CLANG_INCLUDE_PATH/..\\"\)";,\1 -isystem ${rocm-runtime}/include";,' \
-e 's,$HIP_CLANG_PATH/../lib/clang/$HIP_CLANG_VERSION,$HIP_CLANG_PATH/../resource-root,g' \
-e 's,`file,`${file}/bin/file,g' \
-e 's,`readelf,`${binutils-unwrapped}/bin/readelf,' \
-e 's, ar , ${binutils-unwrapped}/bin/ar ,g' \
-i bin/hipcc.pl
sed -e 's,^\($HSA_PATH=\).*$,\1"${rocm-runtime}";,' \
-e 's,^\($HIP_CLANG_PATH=\).*$,\1"${clang}/bin";,' \
-e 's,^\($HIP_PLATFORM=\).*$,\1"amd";,' \
-e 's,$HIP_CLANG_PATH/llc,${llvm}/bin/llc,' \
-e 's, abs_path, Cwd::abs_path,' \
-i bin/hipconfig.pl
sed -e 's, abs_path, Cwd::abs_path,' -i bin/hipvars.pm
'';
buildPhase = "";
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r * $out/
runHook postInstall
'';
meta = with lib; {
description = "C++ Heterogeneous-Compute Interface for Portability";
homepage = "https://github.com/ROCm-Developer-Tools/HIP";
license = licenses.mit;
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
};
});
in
stdenv.mkDerivation (finalAttrs: {
pname = "hip";
version = "5.4.0";
outputs = [
"out"
] ++ lib.optionals buildDocs [
"doc"
];
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
@ -116,105 +64,115 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-VL0vZVv099pZPX0J2pXPFvrhkVO/b6X+ZZDaD9B1hYI=";
};
nativeBuildInputs = [ cmake python3 makeWrapper perl ];
buildInputs = [ libxml2 numactl libglvnd libX11 python3Packages.cppheaderparser ];
propagatedBuildInputs = [
clang
llvm
rocm-comgr
rocm-device-libs
rocm-runtime
rocm-thunk
rocminfo
];
patches = [
(substituteAll {
src = ./hipamd-config-paths.patch;
inherit clang llvm hip;
src = ./0000-fixup-paths.patch;
inherit llvm;
clang = stdenv.cc;
rocm_runtime = rocm-runtime;
})
# https://github.com/ROCm-Developer-Tools/hipamd/commit/be33ec55acc104a59d01df5912261d007c7f3ee9
(fetchpatch {
url = "https://github.com/ROCm-Developer-Tools/hipamd/commit/be33ec55acc104a59d01df5912261d007c7f3ee9.patch";
hash = "sha256-eTC4mUIN1FwRce1n38uDOlITFL/vpcOhvnaZTo5R7lo=";
})
];
prePatch = ''
sed -e 's,#!/bin/bash,#!${stdenv.shell},' \
-i src/hip_embed_pch.sh
'';
nativeBuildInputs = [
makeWrapper
cmake
perl
python3Packages.python
python3Packages.cppheaderparser
] ++ lib.optionals buildDocs [
doxygen
graphviz
fontconfig
];
preConfigure = ''
export HIP_CLANG_PATH=${clang}/bin
export DEVICE_LIB_PATH=${rocm-device-libs}/lib
'';
buildInputs = [
numactl
libxml2
libX11
libglvnd
];
propagatedBuildInputs = [
stdenv.cc
llvm
rocminfo
rocm-thunk
rocm-comgr
rocm-device-libs
rocm-runtime
rocm-opencl-runtime
] ++ lib.optionals useNVIDIA [
cudatoolkit
];
cmakeFlags = [
"-DHIP_PLATFORM=amd"
"-DAMD_OPENCL_PATH=${rocm-opencl-runtime.src}"
"-DHIP_COMMON_DIR=${hip}"
"-DROCM_PATH=${rocminfo}"
"-DHIP_PLATFORM=${hipPlatform}"
"-DHIP_COMMON_DIR=${hip-common}"
"-DHIPCC_BIN_DIR=${hipcc}/bin"
"-DHIP_LLVM_ROOT=${stdenv.cc}"
"-DROCCLR_PATH=${rocclr}"
"-DHIP_VERSION_BUILD_ID=0"
"-DAMD_OPENCL_PATH=${rocm-opencl-runtime.src}"
"-DPROF_API_HEADER_PATH=${roctracer.src}/inc/ext"
# Temporarily set variables to work around upstream CMakeLists issue
# Can be removed once https://github.com/ROCm-Developer-Tools/hipamd/issues/55 is fixed
"-DCMAKE_INSTALL_BINDIR=bin"
"-DCMAKE_INSTALL_INCLUDEDIR=include"
"-DCMAKE_INSTALL_LIBDIR=lib"
] ++ lib.optionals buildTests [
"-DHIP_CATCH_TEST=1"
];
postPatch = ''
export HIP_CLANG_PATH=${stdenv.cc}/bin
patchShebangs src
'' + lib.optionalString buildDocs ''
export HOME=$(mktemp -d)
export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf
'';
doCheck = buildTests;
checkTarget = "build_tests";
preCheck = lib.optionalString buildTests ''
export ROCM_PATH=$PWD
export DEVICE_LIB_PATH=${rocm-device-libs}/amdgcn/bitcode
patchShebangs bin
'';
postInstall = ''
patchShebangs $out/bin
wrapProgram $out/bin/hipcc --set HIP_PATH $out --set HSA_PATH ${rocm-runtime} --set HIP_CLANG_PATH ${clang}/bin --prefix PATH : ${llvm}/bin --set ROCM_PATH $out
wrapProgram $out/bin/hipconfig --set HIP_PATH $out --set HSA_PATH ${rocm-runtime} --set HIP_CLANG_PATH ${clang}/bin
cp -a $out/bin/hipcc $out/bin/hipcc-pl
cp -a $out/bin/hipconfig $out/bin/hipconfig-pl
wrapProgram $out/bin/hipcc --set HIP_USE_PERL_SCRIPTS 0
wrapProgram $out/bin/hipconfig --set HIP_USE_PERL_SCRIPTS 0
wrapProgram $out/bin/hipcc.bin ${lib.concatStringsSep " " wrapperArgs}
wrapProgram $out/bin/hipconfig.bin ${lib.concatStringsSep " " wrapperArgs}
wrapProgram $out/bin/hipcc-pl --set HIP_USE_PERL_SCRIPTS 1
wrapProgram $out/bin/hipconfig-pl --set HIP_USE_PERL_SCRIPTS 1
wrapProgram $out/bin/hipcc.pl ${lib.concatStringsSep " " wrapperArgs}
wrapProgram $out/bin/hipconfig.pl ${lib.concatStringsSep " " wrapperArgs}
'';
# TODO: Separate HIP and hipamd into separate derivations
passthru.updateScript = writeScript "update.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts nix-prefetch-github
version="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
-sL "https://api.github.com/repos/ROCm-Developer-Tools/HIP/releases?per_page=1" | jq '.[0].tag_name | split("-") | .[1]' --raw-output)"
IFS='.' read -a version_arr <<< "$version"
if [ "''${#version_arr[*]}" == 2 ]; then
version="''${version}.0"
fi
current_version="$(grep "version =" pkgs/development/compilers/hip/default.nix | head -n1 | cut -d'"' -f2)"
if [[ "$version" != "$current_version" ]]; then
tarball_meta="$(nix-prefetch-github ROCm-Developer-Tools HIP --rev "rocm-$version")"
tarball_hash="$(nix to-base64 sha256-$(jq -r '.sha256' <<< "$tarball_meta"))"
sed -i -z "pkgs/development/compilers/hip/default.nix" \
-e 's,version = "[^'"'"'"]*",version = "'"$version"'",1' \
-e 's,hash = "[^'"'"'"]*",hash = "sha256-'"$tarball_hash"'",1'
else
echo hip already up-to-date
fi
version="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
-sL "https://api.github.com/repos/ROCm-Developer-Tools/hipamd/releases?per_page=1" | jq '.[0].tag_name | split("-") | .[1]' --raw-output)"
IFS='.' read -a version_arr <<< "$version"
if [ "''${#version_arr[*]}" == 2 ]; then
version="''${version}.0"
fi
current_version="$(grep "version =" pkgs/development/compilers/hip/default.nix | tail -n1 | cut -d'"' -f2)"
if [[ "$version" != "$current_version" ]]; then
tarball_meta="$(nix-prefetch-github ROCm-Developer-Tools hipamd --rev "rocm-$version")"
tarball_hash="$(nix to-base64 sha256-$(jq -r '.sha256' <<< "$tarball_meta"))"
sed -i -z "pkgs/development/compilers/hip/default.nix" \
-e 's,version = "[^'"'"'"]*",version = "'"$version"'",2' \
-e 's,hash = "[^'"'"'"]*",hash = "sha256-'"$tarball_hash"'",2'
else
echo hipamd already up-to-date
fi
'';
passthru.updateScript = rocmUpdateScript {
name = finalAttrs.pname;
owner = finalAttrs.src.owner;
repo = finalAttrs.src.repo;
};
meta = with lib; {
description = "C++ Heterogeneous-Compute Interface for Portability";
description = "C++ Heterogeneous-Compute Interface for Portability specifically for AMD platform";
homepage = "https://github.com/ROCm-Developer-Tools/hipamd";
license = licenses.mit;
license = with licenses; [ mit ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
# Tests require GPU, also include issues
broken = finalAttrs.version != hip-common.version || finalAttrs.version != hipcc.version || buildTests;
};
})

View file

@ -1,35 +0,0 @@
diff --git a/hip-lang-config.cmake.in b/hip-lang-config.cmake.in
index 1a72643a..7f35031f 100644
--- a/hip-lang-config.cmake.in
+++ b/hip-lang-config.cmake.in
@@ -71,8 +71,8 @@ get_filename_component(_IMPORT_PREFIX "${_DIR}/../../../" REALPATH)
#need _IMPORT_PREFIX to be set #FILE_REORG_BACKWARD_COMPATIBILITY
-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "${_IMPORT_PREFIX}/../llvm/lib/clang/*/include")
-file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "${_IMPORT_PREFIX}/llvm/lib/clang/*/include")
+file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS "@llvm@/lib/clang/*/include")
+file(GLOB HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG "@llvm@/lib/clang/*/include")
find_path(HIP_CLANG_INCLUDE_PATH __clang_cuda_math.h
HINTS ${HIP_CLANG_INCLUDE_SEARCH_PATHS}
${HIP_CLANG_INCLUDE_SEARCH_PATHS_REORG}
@@ -87,9 +87,7 @@ endif()
#if HSA is not under ROCm then provide CMAKE_PREFIX_PATH=<HSA_PATH>
find_path(HSA_HEADER hsa/hsa.h
PATHS
- "${_IMPORT_PREFIX}/../include" #FILE_REORG_BACKWARD_COMPATIBILITY
- "${_IMPORT_PREFIX}/include"
- "${ROCM_PATH}/include"
+ "@rocm_runtime@/include"
)
if (NOT HSA_HEADER)
@@ -97,7 +94,7 @@ if (HSA_HEADER-NOTFOUND)
endif()
get_filename_component(HIP_COMPILER_INSTALL_PATH ${CMAKE_HIP_COMPILER} DIRECTORY)
-file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "${HIP_COMPILER_INSTALL_PATH}/../lib/clang/*/lib/*")
+file(GLOB HIP_CLANGRT_LIB_SEARCH_PATHS "@llvm@/lib/clang/*/lib/*")
find_library(CLANGRT_BUILTINS
NAMES
clang_rt.builtins

View file

@ -1,73 +0,0 @@
diff --git a/hip-config.cmake.in b/hip-config.cmake.in
index 89d1224e..120b68c6 100755
--- a/hip-config.cmake.in
+++ b/hip-config.cmake.in
@@ -142,7 +142,7 @@ if(HIP_COMPILER STREQUAL "clang")
file(TO_CMAKE_PATH "${HIP_PATH}/../lc" HIP_CLANG_ROOT)
endif()
else()
- set(HIP_CLANG_ROOT "${ROCM_PATH}/llvm")
+ set(HIP_CLANG_ROOT "@clang@")
endif()
if(NOT HIP_CXX_COMPILER)
set(HIP_CXX_COMPILER ${CMAKE_CXX_COMPILER})
@@ -206,10 +206,7 @@ if(NOT WIN32)
#if HSA is not under ROCm then provide CMAKE_PREFIX_PATH=<HSA_PATH>
find_path(HSA_HEADER hsa/hsa.h
PATHS
- "${_IMPORT_PREFIX}/include"
- #FILE_REORG_BACKWARD_COMPATIBILITY ${_IMPORT_PREFIX}/../include is for Backward compatibility
- "${_IMPORT_PREFIX}/../include"
- ${ROCM_PATH}/include
+ "@rocm_runtime@/include"
)
if (NOT HSA_HEADER)
@@ -224,8 +221,8 @@ set_target_properties(hip::host PROPERTIES
if(HIP_RUNTIME MATCHES "rocclr")
set_target_properties(hip::amdhip64 PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}"
- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include;${HSA_HEADER}"
+ INTERFACE_INCLUDE_DIRECTORIES "@hip@/include;${HSA_HEADER}"
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "@hip@/include;${HSA_HEADER}"
)
get_target_property(amdhip64_type hip::amdhip64 TYPE)
@@ -233,8 +230,8 @@ if(HIP_RUNTIME MATCHES "rocclr")
if(NOT WIN32)
set_target_properties(hip::device PROPERTIES
- INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
- INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
+ INTERFACE_INCLUDE_DIRECTORIES "@hip@/include"
+ INTERFACE_SYSTEM_INCLUDE_DIRECTORIES "@hip@/include"
)
endif()
endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 83866d83..4125d3aa 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -178,7 +178,7 @@ if(__HIP_ENABLE_PCH)
${ROCM_PATH}/llvm)
# find_package(LLVM) returns the lib/cmake/llvm location. We require the root.
if(NOT DEFINED HIP_LLVM_ROOT)
- set(HIP_LLVM_ROOT "${LLVM_DIR}/../../..")
+ set(HIP_LLVM_ROOT "@clang@")
endif()
execute_process(COMMAND sh -c "${CMAKE_CURRENT_SOURCE_DIR}/hip_embed_pch.sh ${HIP_COMMON_INCLUDE_DIR} ${PROJECT_BINARY_DIR}/include ${PROJECT_SOURCE_DIR}/include ${HIP_LLVM_ROOT}" COMMAND_ECHO STDERR RESULT_VARIABLE EMBED_PCH_RC)
diff --git a/src/hip_embed_pch.sh b/src/hip_embed_pch.sh
index 0a1572b2..aa855d63 100755
--- a/src/hip_embed_pch.sh
+++ b/src/hip_embed_pch.sh
@@ -149,7 +149,7 @@ EOF
$LLVM_DIR/bin/clang -cc1 -O3 -emit-pch -triple amdgcn-amd-amdhsa -aux-triple x86_64-unknown-linux-gnu -fcuda-is-device -std=c++17 -fgnuc-version=4.2.1 -o $tmp/hip_wave64.pch -x hip-cpp-output - <$tmp/pch_wave64.cui &&
- $LLVM_DIR/bin/llvm-mc -o hip_pch.o $tmp/hip_pch.mcin --filetype=obj &&
+ @llvm@/bin/llvm-mc -o hip_pch.o $tmp/hip_pch.mcin --filetype=obj &&
rm -rf $tmp
}

View file

@ -0,0 +1,130 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c21f247..5bd3e45 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -17,6 +17,6 @@ if (NOT WIN32) # C++17 does not require the std lib linking
target_link_libraries(hipconfig.bin ${LINK_LIBS} ) # for hipconfig.bin
endif()
-set(HIP_VERSION_MAJOR 4 PARENT_SCOPE)
-set(HIP_VERSION_MINOR 4 PARENT_SCOPE)
-set(HIP_VERSION_PATCH 4 PARENT_SCOPE)
+set(HIP_VERSION_MAJOR @version_major@)
+set(HIP_VERSION_MINOR @version_minor@)
+set(HIP_VERSION_PATCH @version_patch@)
diff --git a/src/hipBin_amd.h b/src/hipBin_amd.h
index f94e4a5..f0b1b83 100644
--- a/src/hipBin_amd.h
+++ b/src/hipBin_amd.h
@@ -207,7 +207,7 @@ void HipBinAmd::initializeHipCXXFlags() {
hipClangIncludePath = getCompilerIncludePath();
hipCXXFlags += " -isystem \"" + hipClangIncludePath;
fs::path hipCXXFlagsTempFs = hipCXXFlags;
- hipCXXFlagsTempFs /= "..\"";
+ hipCXXFlagsTempFs /= "\"";
hipCXXFlags = hipCXXFlagsTempFs.string();
const EnvVariables& var = getEnvVariables();
// Allow __fp16 as function parameter and return type.
@@ -266,7 +266,7 @@ void HipBinAmd::printCompilerInfo() const {
string cmd = hipClangPath + "/clang++ --version";
system(cmd.c_str()); // hipclang version
cout << "llc-version :" << endl;
- cmd = hipClangPath + "/llc --version";
+ cmd = "@llvm@/bin/llc --version";
system(cmd.c_str()); // llc version
cout << "hip-clang-cxxflags :" << endl;
cmd = hipPath + "/bin/hipcc --cxxflags";
@@ -278,7 +278,7 @@ void HipBinAmd::printCompilerInfo() const {
} else {
string cmd = hipClangPath + "/clang++ --version";
system(cmd.c_str()); // hipclang version
- cmd = hipClangPath + "/llc --version";
+ cmd = "@llvm@/bin/llc --version";
system(cmd.c_str()); // llc version
cout << "hip-clang-cxxflags :" << endl;
cmd = hipPath + "/bin/hipcc --cxxflags";
@@ -331,10 +331,7 @@ string HipBinAmd::getCppConfig() {
hipPathInclude /= "include";
const string& compilerPath = getCompilerPath();
- hipClangInclude = compilerPath;
- hipClangInclude = hipClangInclude.parent_path();
- hipClangInclude /= "lib/clang/";
- hipClangInclude /= compilerVersion;
+ hipClangInclude = "@clang@/resource-root/include";
string hipClangPath = hipClangInclude.string();
const OsType& osInfo = getOSInfo();
@@ -442,17 +439,7 @@ string HipBinAmd::getHipCC() const {
string HipBinAmd::getCompilerIncludePath() {
- string hipClangVersion, includePath, compilerIncludePath;
- const string& hipClangPath = getCompilerPath();
- hipClangVersion = getCompilerVersion();
- fs::path includePathfs = hipClangPath;
- includePathfs = includePathfs.parent_path();
- includePathfs /= "lib/clang/";
- includePathfs /= hipClangVersion;
- includePathfs /= "include";
- includePathfs = fs::absolute(includePathfs).string();
- compilerIncludePath = includePathfs.string();
- return compilerIncludePath;
+ return "@clang@/resource-root/include";
}
@@ -506,8 +493,8 @@ void HipBinAmd::printFull() {
cout << endl << "== Envirnoment Variables" << endl;
printEnvironmentVariables();
getSystemInfo();
- if (fs::exists("/usr/bin/lsb_release"))
- system("/usr/bin/lsb_release -a");
+ if (fs::exists("@lsb_release@/bin/lsb_release"))
+ system("@lsb_release@/bin/lsb_release -a");
cout << endl;
}
@@ -993,7 +980,7 @@ void HipBinAmd::executeHipCCCmd(vector<string> argv) {
} else if (os != windows) {
// Else try using rocm_agent_enumerator
string ROCM_AGENT_ENUM;
- ROCM_AGENT_ENUM = roccmPath + "/bin/rocm_agent_enumerator";
+ ROCM_AGENT_ENUM = "@rocminfo@/bin/rocm_agent_enumerator";
targetsStr = ROCM_AGENT_ENUM +" -t GPU";
SystemCmdOut sysOut = hipBinUtilPtr_->exec(targetsStr.c_str());
regex toReplace("\n+");
@@ -1097,7 +1084,7 @@ void HipBinAmd::executeHipCCCmd(vector<string> argv) {
string hipClangVersion, toolArgTemp;
if (linkType == 0) {
toolArgTemp = " -L"+ hipLibPath + "-lamdhip64 -L" +
- roccmPath+ "/lib -lhsa-runtime64 -ldl -lnuma " + toolArgs;
+ "@rocm_runtime@/lib -lhsa-runtime64 -ldl -lnuma " + toolArgs;
toolArgs = toolArgTemp;
} else {
toolArgTemp = toolArgs + " -Wl,--enable-new-dtags -Wl,-rpath=" + hipLibPath + ":"
@@ -1107,8 +1094,7 @@ void HipBinAmd::executeHipCCCmd(vector<string> argv) {
hipClangVersion = getCompilerVersion();
// To support __fp16 and _Float16, explicitly link with compiler-rt
- toolArgs += " -L" + hipClangPath + "/../lib/clang/" +
- hipClangVersion + "/lib/linux -lclang_rt.builtins-x86_64 ";
+ toolArgs += " -L@clang@/resource-root/lib/linux -lclang_rt.builtins-x86_64 ";
}
if (!var.hipccCompileFlagsAppendEnv_.empty()) {
HIPCXXFLAGS += " " + var.hipccCompileFlagsAppendEnv_ + " ";
diff --git a/src/hipBin_nvidia.h b/src/hipBin_nvidia.h
index 6feb315..b61739d 100644
--- a/src/hipBin_nvidia.h
+++ b/src/hipBin_nvidia.h
@@ -157,8 +157,8 @@ void HipBinNvidia::printFull() {
cout << endl << "== Envirnoment Variables" << endl;
printEnvironmentVariables();
getSystemInfo();
- if (fs::exists("/usr/bin/lsb_release"))
- system("/usr/bin/lsb_release -a");
+ if (fs::exists("@lsb_release@/bin/lsb_release"))
+ system("@lsb_release@/bin/lsb_release -a");
}
// returns hip include

View file

@ -0,0 +1,62 @@
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, substituteAll
, cmake
, llvm
, rocm-runtime
, rocminfo
, lsb-release
}:
stdenv.mkDerivation (finalAttrs: {
pname = "hipcc";
version = "5.4.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "HIPCC";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-PEwue4O43MiMkF8UmTeHsmlikBG2V3/nFQLKmtHrRWQ=";
};
patches = [
(substituteAll {
src = ./0000-fixup-paths.patch;
inherit llvm rocminfo;
version_major = lib.versions.major finalAttrs.version;
version_minor = lib.versions.minor finalAttrs.version;
version_patch = lib.versions.patch finalAttrs.version;
clang = stdenv.cc;
rocm_runtime = rocm-runtime;
lsb_release = lsb-release;
})
];
nativeBuildInputs = [ cmake ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mv *.bin $out/bin
runHook postInstall
'';
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-Developer-Tools/HIPCC";
license = with licenses; [ mit ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -0,0 +1,18 @@
diff --git a/libomptarget/plugins/amdgpu/impl/impl.cpp b/libomptarget/plugins/amdgpu/impl/impl.cpp
index 80e024789..3a14e0889 100644
--- a/libomptarget/plugins/amdgpu/impl/impl.cpp
+++ b/libomptarget/plugins/amdgpu/impl/impl.cpp
@@ -21,10 +21,11 @@ bool is_locked(void *ptr, hsa_status_t *err_p, void **agentBaseAddress) {
info.size = sizeof(hsa_amd_pointer_info_t);
err = hsa_amd_pointer_info(ptr, &info, nullptr, nullptr, nullptr);
- if (err != HSA_STATUS_SUCCESS)
+ if (err != HSA_STATUS_SUCCESS) {
DP("Error when getting pointer info\n");
- else
+ } else {
is_locked = (info.type == HSA_EXT_POINTER_TYPE_LOCKED);
+ }
if (is_locked && agentBaseAddress != nullptr) {
// When user passes in a basePtr+offset we need to fix the

View file

@ -1,54 +1,600 @@
{ stdenv, lib, buildPackages, fetchFromGitHub, callPackage, wrapCCWith, overrideCC }:
{ lib
, stdenv
, callPackage
, overrideCC
, wrapCCWith
, wrapBintoolsWith
, runCommand
, lit
, glibc
, spirv-llvm-translator
, xz
, swig
, lua5_3
, gtest
, hip
, rocm-comgr
, vulkan-loader
, vulkan-headers
, glslang
, shaderc
, perl
, rocm-device-libs
, rocm-runtime
, elfutils
, python3Packages
}:
let
version = "5.4.0";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
repo = "llvm-project";
rev = "rocm-${version}";
hash = "sha256-rlVo77h344PLGj/mIzsw+/ndWywsBsiKDXsEDpWSUno=";
# Stage 1
# Base
llvm = callPackage ./llvm.nix { };
# Projects
clang-unwrapped = callPackage ./llvm.nix rec {
targetName = "clang";
targetDir = targetName;
extraBuildInputs = [ llvm ];
extraCMakeFlags = [
"-DCMAKE_POLICY_DEFAULT_CMP0116=NEW"
"-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
# `fatal error: 'stdio.h' file not found`
rm test/OpenMP/amdgcn_emit_llvm.c
'';
extraPostInstall = ''
mv bin/clang-tblgen $out/bin
'';
};
lld = callPackage ./llvm.nix rec {
buildMan = false; # No man pages to build
targetName = "lld";
targetDir = targetName;
extraBuildInputs = [ llvm ];
extraCMakeFlags = [ "-DCMAKE_POLICY_DEFAULT_CMP0116=NEW" ];
checkTargets = [ "check-lld" ];
};
# Runtimes
runtimes = callPackage ./llvm.nix {
buildDocs = false;
buildMan = false;
buildTests = false;
targetDir = "runtimes";
targetRuntimes = [
# "libc" https://github.com/llvm/llvm-project/issues/57719
"libunwind"
"libcxxabi"
"libcxx"
"compiler-rt"
];
extraBuildInputs = [ llvm ];
extraCMakeFlags = [
"-DCMAKE_POLICY_DEFAULT_CMP0114=NEW"
"-DLIBCXX_INCLUDE_BENCHMARKS=OFF"
"-DLIBCXX_CXX_ABI=libcxxabi"
];
extraLicenses = [ lib.licenses.mit ];
};
# Stage 2
# Helpers
rStdenv = overrideCC stdenv (wrapCCWith rec {
inherit bintools;
libcxx = runtimes;
cc = clang-unwrapped;
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
'';
});
bintools = wrapBintoolsWith { bintools = bintools-unwrapped; };
bintools-unwrapped = 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
'';
in rec {
inherit
llvm
clang-unwrapped
lld
bintools
bintools-unwrapped;
# Runtimes
libc = callPackage ./llvm.nix rec {
stdenv = rStdenv;
targetName = "libc";
targetDir = "runtimes";
targetRuntimes = [ targetName ];
isBroken = true; # https://github.com/llvm/llvm-project/issues/57719
};
libunwind = callPackage ./llvm.nix rec {
stdenv = rStdenv;
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"
];
};
libcxxabi = callPackage ./llvm.nix rec {
stdenv = rStdenv;
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"
];
};
libcxx = callPackage ./llvm.nix rec {
stdenv = rStdenv;
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}
rm -rf ../libcxx/test/libcxx/input.output/filesystems
rm ../libcxx/test/libcxx/selftest/remote-substitutions.sh.cpp
rm ../libcxx/test/std/input.output/file.streams/fstreams/filebuf.virtuals/pbackfail.pass.cpp
rm ../libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/pbackfail.pass.cpp
rm ../libcxx/test/std/utilities/optional/optional.object/optional.object.assign/emplace_initializer_list.pass.cpp
rm ../libcxx/test/std/utilities/optional/optional.object/optional.object.assign/nullopt_t.pass.cpp
rm -rf ../libcxx/test/std/utilities/optional/optional.object/optional.object.ctor
rm -rf ../libcxx/test/std/input.output/filesystems/{class.directory_entry,class.directory_iterator,class.rec.dir.itr,fs.op.funcs}
'';
};
compiler-rt = callPackage ./llvm.nix rec {
stdenv = rStdenv;
buildDocs = false; # No documentation to build
buildMan = false; # No man pages to build
targetName = "compiler-rt";
targetDir = "runtimes";
targetRuntimes = [
"libunwind"
"libcxxabi"
"libcxx"
targetName
];
extraCMakeFlags = [
"-DCMAKE_POLICY_DEFAULT_CMP0114=NEW"
"-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)"
'';
extraLicenses = [ lib.licenses.mit ];
};
# Stage 3
# Helpers
rocmClangStdenv = overrideCC stdenv clang;
clang = wrapCCWith rec {
cc = llvm;
# inherit libc libcxx bintools;
inherit libcxx bintools;
# We do this to avoid HIP pathing problems, and mimic a monolithic install
cc = stdenv.mkDerivation (finalAttrs: {
inherit (clang-unwrapped) pname version;
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} ${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 -s $out/include/* $out/lib/clang/$clang_version/include
runHook postInstall
'';
passthru.isClang = true;
});
extraPackages = [
llvm
lld
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.-]+"`
rsrc="$out/resource-root"
mkdir "$rsrc"
ln -s "${cc}/lib/clang/$clang_version/include" "$rsrc"
ln -s "${cc}/lib/clang/$clang_version/lib" "$rsrc/lib"
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
echo "--gcc-toolchain=${stdenv.cc.cc}" >> $out/nix-support/cc-cflags
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
rm $out/nix-support/add-hardening.sh
touch $out/nix-support/add-hardening.sh
# GPU compilation uses builtin lld
substituteInPlace $out/bin/clang \
--replace '-MM) dontLink=1 ;;' $'-MM | --cuda-device-only) dontLink=1 ;;\n--cuda-host-only | --cuda-compile-host-device) dontLink=0 ;;'
substituteInPlace $out/bin/clang++ \
--replace '-MM) dontLink=1 ;;' $'-MM | --cuda-device-only) dontLink=1 ;;\n--cuda-host-only | --cuda-compile-host-device) dontLink=0 ;;'
# 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 ;;"
'';
};
clangNoCompilerRt = wrapCCWith rec {
cc = llvm;
extraBuildCommands = ''
clang_version=`${cc}/bin/clang -v 2>&1 | grep "clang version " | grep -E -o "[0-9.-]+"`
rsrc="$out/resource-root"
mkdir "$rsrc"
ln -s "${cc}/lib/clang/$clang_version/include" "$rsrc"
echo "-resource-dir=$rsrc" >> $out/nix-support/cc-cflags
echo "--gcc-toolchain=${stdenv.cc.cc}" >> $out/nix-support/cc-cflags
rm $out/nix-support/add-hardening.sh
touch $out/nix-support/add-hardening.sh
# GPU compilation uses builtin lld
substituteInPlace $out/bin/clang \
--replace '-MM) dontLink=1 ;;' $'-MM | --cuda-device-only) dontLink=1 ;;\n--cuda-host-only | --cuda-compile-host-device) dontLink=0 ;;'
substituteInPlace $out/bin/clang++ \
--replace '-MM) dontLink=1 ;;' $'-MM | --cuda-device-only) dontLink=1 ;;\n--cuda-host-only | --cuda-compile-host-device) dontLink=0 ;;'
# Base
# Unfortunately, we cannot build `clang-tools-extra` separately.
clang-tools-extra = callPackage ./llvm.nix {
stdenv = rocmClangStdenv;
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
'';
};
llvm = callPackage ./llvm.nix {
inherit src version;
# Projects
libclc = let
spirv = (spirv-llvm-translator.override { inherit llvm; });
in callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
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 = [ ];
};
lldb = callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
buildTests = false; # ld.lld: error: unable to find library -lllvm_gtest_main
targetName = "lldb";
targetDir = targetName;
extraNativeBuildInputs = [ python3Packages.sphinx-automodapi ];
extraBuildInputs = [
xz
swig
lua5_3
gtest
];
extraCMakeFlags = [
"-DLLVM_EXTERNAL_LIT=${lit}/bin/.lit-wrapped"
"-DLLDB_INCLUDE_TESTS=ON"
"-DLLDB_INCLUDE_UNITTESTS=ON"
];
};
mlir = callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
buildDocs = false; # No decent way to hack this to work
buildMan = false; # No man pages to build
targetName = "mlir";
targetDir = targetName;
extraNativeBuildInputs = [ hip ];
extraBuildInputs = [
rocm-comgr
vulkan-headers
vulkan-loader
glslang
shaderc
];
extraCMakeFlags = [
"-DCMAKE_POLICY_DEFAULT_CMP0116=NEW"
"-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 = ''
chmod +w ../llvm
mkdir -p ../llvm/build/bin
ln -s ${lit}/bin/lit ../llvm/build/bin/llvm-lit
substituteInPlace test/CMakeLists.txt \
--replace "FileCheck count not" "" \
--replace "list(APPEND MLIR_TEST_DEPENDS mlir_rocm_runtime)" ""
substituteInPlace lib/ExecutionEngine/CMakeLists.txt \
--replace "return()" ""
# Remove problematic tests
rm test/CAPI/execution_engine.c
rm test/Target/LLVMIR/llvmir-intrinsics.mlir
rm test/Target/LLVMIR/llvmir.mlir
rm test/Target/LLVMIR/openmp-llvm.mlir
rm test/mlir-cpu-runner/*.mlir
rm test/mlir-vulkan-runner/*.mlir
'';
extraPostInstall = ''
mkdir -p $out/bin
mv bin/mlir-tblgen $out/bin
'';
checkTargets = [ "check-${targetName}" ];
};
polly = callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
targetName = "polly";
targetDir = targetName;
checkTargets = [ "check-${targetName}" ];
};
flang = callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
buildTests = false; # `Executable "flang1" doesn't exist!`
targetName = "flang";
targetDir = targetName;
extraNativeBuildInputs = [ python3Packages.sphinx-markdown-tables ];
extraBuildInputs = [ mlir ];
extraCMakeFlags = [
"-DCMAKE_POLICY_DEFAULT_CMP0116=NEW"
"-DCLANG_DIR=${clang-unwrapped}/lib/cmake/clang"
"-DFLANG_INCLUDE_TESTS=OFF"
"-DMLIR_TABLEGEN_EXE=${mlir}/bin/mlir-tblgen"
];
extraPostPatch = ''
substituteInPlace test/CMakeLists.txt \
--replace "FileCheck" "" \
--replace "count" "" \
--replace "not" ""
substituteInPlace docs/CMakeLists.txt \
--replace "CLANG_TABLEGEN_EXE clang-tblgen" "CLANG_TABLEGEN_EXE ${clang-unwrapped}/bin/clang-tblgen"
'';
};
openmp = callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
buildTests = false; # Too many failures, most pass
targetName = "openmp";
targetDir = targetName;
extraPatches = [ ./0000-fix-openmp.patch ];
extraNativeBuildInputs = [ perl ];
extraBuildInputs = [
rocm-device-libs
rocm-runtime
elfutils
];
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"
"-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" ""
'';
checkTargets = [ "check-${targetName}" ];
extraLicenses = [ lib.licenses.mit ];
};
# Runtimes
pstl = callPackage ./llvm.nix rec {
stdenv = rocmClangStdenv;
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}" ];
};
}

View file

@ -1,22 +1,44 @@
{ stdenv
, lib
, fetchgit
{ lib
, stdenv
, fetchFromGitHub
, writeScript
, rocmUpdateScript
, pkg-config
, cmake
, ninja
, python3
, git
, doxygen
, sphinx
, lit
, libxml2
, libffi
, libbfd
, libxcrypt
, ncurses
, libedit
, libffi
, mpfr
, zlib
, debugVersion ? false
, enableManpages ? false
, version
, src
, ncurses
, python3Packages
, buildDocs ? true
, buildMan ? true
, buildTests ? true
, targetName ? "llvm"
, targetDir ? "llvm"
, targetProjects ? [ ]
, targetRuntimes ? [ ]
, extraPatches ? [ ]
, extraNativeBuildInputs ? [ ]
, extraBuildInputs ? [ ]
, extraCMakeFlags ? [ ]
, extraPostPatch ? ""
, checkTargets ? [(
lib.optionalString buildTests (
if targetDir == "runtimes"
then "check-runtimes"
else "check-all"
)
)]
, extraPostInstall ? ""
, extraLicenses ? [ ]
, isBroken ? false
}:
let
@ -25,73 +47,119 @@ let
else if stdenv.isAarch64 then "AArch64"
else throw "Unsupported ROCm LLVM platform";
in stdenv.mkDerivation (finalAttrs: {
inherit src version;
pname = "rocm-llvm-${targetName}";
version = "5.4.1";
pname = "rocm-llvm";
sourceRoot = "${src.name}/llvm";
nativeBuildInputs = [ cmake ninja python3 ];
buildInputs = [ libxml2 libxcrypt ];
propagatedBuildInputs = [ ncurses zlib ];
cmakeFlags = with stdenv; [
"-DCMAKE_BUILD_TYPE=${if debugVersion then "Debug" else "Release"}"
"-DLLVM_INSTALL_UTILS=ON" # Needed by rustc
"-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}"
"-DLLVM_ENABLE_PROJECTS=clang;lld;compiler-rt"
]
++ lib.optionals enableManpages [
"-DLLVM_BINUTILS_INCDIR=${libbfd.dev}/include"
"-DLLVM_BUILD_DOCS=ON"
"-DLLVM_ENABLE_SPHINX=ON"
"-DSPHINX_OUTPUT_MAN=ON"
"-DSPHINX_OUTPUT_HTML=OFF"
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
outputs = [
"out"
] ++ lib.optionals buildDocs [
"doc"
] ++ lib.optionals buildMan [
"man"
"info" # Avoid `attribute 'info' missing` when using with wrapCC
];
postPatch = ''
patches = extraPatches;
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
repo = "llvm-project";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-rlVo77h344PLGj/mIzsw+/ndWywsBsiKDXsEDpWSUno=";
};
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=AMDGPU;${llvmNativeTarget}"
] ++ 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 || finalAttrs.passthru.isClang) [
"-DLLVM_ENABLE_RTTI=ON"
"-DLLVM_ENABLE_EH=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"
"-DLLVM_ENABLE_OCAMLDOC=OFF"
"-DSPHINX_OUTPUT_HTML=ON"
"-DSPHINX_OUTPUT_MAN=ON"
"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
] ++ lib.optionals buildTests [
"-DLLVM_INCLUDE_TESTS=ON"
"-DLLVM_BUILD_TESTS=ON"
] ++ lib.optionals (buildTests && !finalAttrs.passthru.isLLVM) [
"-DLLVM_EXTERNAL_LIT=${lit}/bin/.lit-wrapped"
] ++ extraCMakeFlags;
postPatch = lib.optionalString finalAttrs.passthru.isLLVM ''
patchShebangs lib/OffloadArch/make_generated_offload_arch_h.sh
substituteInPlace ../clang/cmake/modules/CMakeLists.txt \
--replace 'FILES_MATCHING' 'NO_SOURCE_PERMISSIONS FILES_MATCHING'
'';
'' + 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 finalAttrs.passthru.isLLVM ''
# `lit` expects these for some test suites
mv bin/{FileCheck,not,count,yaml2obj,obj2yaml} $out/bin
'' + lib.optionalString buildMan ''
mkdir -p $info
'' + extraPostInstall;
passthru = {
isClang = true;
isLLVM = targetDir == "llvm";
isClang = targetDir == "clang" || builtins.elem "clang" targetProjects;
updateScript = writeScript "update.sh" ''
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts nix-prefetch-github
version="$(curl ''${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} \
-sL "https://api.github.com/repos/RadeonOpenCompute/llvm-project/releases?per_page=1" | jq '.[0].tag_name | split("-") | .[1]' --raw-output)"
IFS='.' read -a version_arr <<< "$version"
if [ "''${#version_arr[*]}" == 2 ]; then
version="''${version}.0"
fi
current_version="$(grep "version =" pkgs/development/compilers/llvm/rocm/default.nix | cut -d'"' -f2)"
if [[ "$version" != "$current_version" ]]; then
tarball_meta="$(nix-prefetch-github RadeonOpenCompute llvm-project --rev "rocm-$version")"
tarball_hash="$(nix to-base64 sha256-$(jq -r '.sha256' <<< "$tarball_meta"))"
sed -i "pkgs/development/compilers/llvm/rocm/default.nix" \
-e 's,version = "\(.*\)",version = "'"$version"'",' \
-e 's,hash = "\(.*\)",hash = "sha256-'"$tarball_hash"'",'
else
echo rocm-llvm already up-to-date
fi
'';
updateScript = rocmUpdateScript {
name = finalAttrs.pname;
owner = finalAttrs.src.owner;
repo = finalAttrs.src.repo;
};
};
meta = with lib; {
description = "ROCm fork of the LLVM compiler infrastructure";
homepage = "https://github.com/RadeonOpenCompute/llvm-project";
license = with licenses; [ ncsa ];
license = with licenses; [ ncsa ] ++ extraLicenses;
maintainers = with maintainers; [ acowley lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = isBroken;
};
})

View file

@ -10,12 +10,14 @@
let
llvmMajor = lib.versions.major llvm.version;
isROCm = lib.hasPrefix "rocm" llvm.pname;
# ROCm will always be at the latest version
branch =
if llvmMajor == "15" then rec {
if llvmMajor == "15" || isROCm then rec {
version = "15.0.0";
rev = "v${version}";
hash = "sha256-111yL6Wh8hykoGz1QmT1F7lfGDEmG4U3iqmqrJxizOg=";
hash = "sha256-OsDohXRxovtEXaWiRGp8gJ0dXmoALyO+ZimeSO8aPVI=";
} else if llvmMajor == "14" then rec{
version = "14.0.0";
rev = "v${version}";
@ -36,15 +38,17 @@ stdenv.mkDerivation {
inherit (branch) rev hash;
};
nativeBuildInputs = [ pkg-config cmake llvm.dev spirv-tools ];
nativeBuildInputs = [ pkg-config cmake spirv-tools ]
++ (if isROCm then [ llvm ] else [ llvm.dev ]);
buildInputs = [ spirv-headers llvm ];
buildInputs = [ spirv-headers ]
++ lib.optionals (!isROCm) [ llvm ];
checkInputs = [ lit ];
cmakeFlags = [
"-DLLVM_INCLUDE_TESTS=ON"
"-DLLVM_DIR=${llvm.dev}"
"-DLLVM_DIR=${(if isROCm then llvm else llvm.dev)}"
"-DBUILD_SHARED_LIBS=YES"
"-DLLVM_SPIRV_BUILD_EXTERNAL=YES"
# RPATH of binary /nix/store/.../bin/llvm-spirv contains a forbidden reference to /build/

View file

@ -5,12 +5,11 @@
, cmake
, rocm-cmake
, rocm-device-libs
, clang
}:
stdenv.mkDerivation (finalAttrs: {
pname = "clang-ocl";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -22,17 +21,9 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
cmake
rocm-cmake
clang
];
buildInputs = [
rocm-device-libs
];
cmakeFlags = [
"-DCMAKE_C_COMPILER=clang"
"-DCMAKE_CXX_COMPILER=clang++"
];
buildInputs = [ rocm-device-libs ];
passthru.updateScript = rocmUpdateScript {
name = finalAttrs.pname;
@ -45,6 +36,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/RadeonOpenCompute/clang-ocl";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
broken = finalAttrs.version != clang.version;
broken = finalAttrs.version != stdenv.cc.cc.version;
};
})

View file

@ -6,6 +6,7 @@
, rocm-cmake
, hip
, openmp
, clang-tools-extra
, gtest
, buildTests ? false
, buildExamples ? false
@ -14,7 +15,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "composable_kernel";
version = "unstable-2022-12-08";
version = "unstable-2022-12-15";
outputs = [
"out"
@ -29,20 +30,19 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
repo = "composable_kernel";
rev = "d58b7f5155b44c8b608f3edc6a6eab314493ec1a";
hash = "sha256-4nzyaWhPnY/0TygcoJAqVzdgfXOkf+o/BE2V9N+Bm7Q=";
rev = "0345963eef4f92e9c5eab608bb8557b5463a1dcb";
hash = "sha256-IJbUZ3/UIPbYO9H+BUPP6T2HyUnC+FVbVPXQE5bEjRg=";
};
nativeBuildInputs = [
cmake
rocm-cmake
hip
clang-tools-extra
];
buildInputs = [
openmp
] ++ lib.optionals buildTests [
gtest
];
cmakeFlags = [
@ -50,16 +50,12 @@ stdenv.mkDerivation (finalAttrs: {
"-DCMAKE_CXX_COMPILER=hipcc"
] ++ lib.optionals (gpuTargets != [ ]) [
"-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
] ++ lib.optionals buildTests [
"-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names
];
# No flags to build selectively it seems...
postPatch = ''
substituteInPlace test/CMakeLists.txt \
--replace "include(googletest)" ""
substituteInPlace CMakeLists.txt \
--replace "enable_testing()" ""
'' + lib.optionalString (!buildTests) ''
postPatch = lib.optionalString (!buildTests) ''
substituteInPlace CMakeLists.txt \
--replace "add_subdirectory(test)" ""
'' + lib.optionalString (!buildExamples) ''
@ -67,15 +63,12 @@ stdenv.mkDerivation (finalAttrs: {
--replace "add_subdirectory(example)" ""
'';
postInstall = ''
mkdir -p $out/bin
mv bin/ckProfiler $out/bin
'' + lib.optionalString buildTests ''
postInstall = lib.optionalString buildTests ''
mkdir -p $test/bin
mv bin/test_* $test/bin
mv $out/bin/test_* $test/bin
'' + lib.optionalString buildExamples ''
mkdir -p $example/bin
mv bin/example_* $example/bin
mv $out/bin/example_* $example/bin
'';
passthru.updateScript = unstableGitUpdater { };
@ -85,9 +78,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/ROCmSoftwarePlatform/composable_kernel";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
# Several tests seem to either not compile or have a race condition
# Undefined reference to symbol '_ZTIN7testing4TestE'
# Try removing this next update
broken = buildTests;
broken = buildExamples; # bin/example_grouped_gemm_xdl_bfp16] Error 139
};
})

View file

@ -4,9 +4,6 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, rocprim
, hip
, gtest
@ -18,7 +15,7 @@
# CUB can also be used as a backend instead of rocPRIM.
stdenv.mkDerivation (finalAttrs: {
pname = "hipcub";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -42,9 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
rocprim
] ++ lib.optionals buildTests [
gtest

View file

@ -4,26 +4,27 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, rocsparse
, hip
, gfortran
, git
, gtest
, openmp
, buildTests ? false
, buildSamples ? false
}:
# This can also use cuSPARSE as a backend instead of rocSPARSE
stdenv.mkDerivation (finalAttrs: {
pname = "hipsparse";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
] ++ lib.optionals buildTests [
"test"
] ++ lib.optionals buildSamples [
"sample"
];
src = fetchFromGitHub {
@ -41,17 +42,18 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
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"
@ -110,6 +112,11 @@ stdenv.mkDerivation (finalAttrs: {
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 ++ [ hip gfortran.cc ])} $sample/bin/example_*
'';
passthru.updateScript = rocmUpdateScript {

View file

@ -6,14 +6,10 @@
, pkg-config
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, rocm-opencl-runtime
, rocblas
, rocmlir
, hip
, clang
, clang-tools-extra
, clang-ocl
, llvm
, miopengemm
@ -27,17 +23,12 @@
, doxygen
, sphinx
, zlib
, gtest
, rocm-comgr
, python3Packages
, buildDocs ? true
, buildTests ? false
# LFS isn't working, so we will manually fetch these
# This isn't strictly required, but is recommended to enable
# https://github.com/ROCmSoftwarePlatform/MIOpen/issues/1373
#
# MIOpen will produce a very large output due to KDBs fetched
# Also possibly in the future because of KDB generation
# This is disabled by default so we can cache on hydra
, fetchKDBs ? false
, fetchKDBs ? true
, useOpenCL ? false
}:
@ -62,7 +53,7 @@ let
};
in stdenv.mkDerivation (finalAttrs: {
pname = "miopen";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -76,7 +67,7 @@ in stdenv.mkDerivation (finalAttrs: {
owner = "ROCmSoftwarePlatform";
repo = "MIOpen";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-EOe3LUafOeVLzRoahPdS6DMZ/+6WWeVI7jG25zfPrx8=";
hash = "sha256-GfXPCXiVJVve3d8sQCQcFLb/vEnKkVEn7xYUhHkEEVI=";
};
nativeBuildInputs = [
@ -84,15 +75,11 @@ in stdenv.mkDerivation (finalAttrs: {
cmake
rocm-cmake
hip
clang
llvm
clang-tools-extra
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
rocm-opencl-runtime
llvm
rocblas
rocmlir
clang-ocl
@ -126,8 +113,6 @@ in stdenv.mkDerivation (finalAttrs: {
"-DCMAKE_CXX_COMPILER=hipcc"
"-DMIOPEN_BACKEND=HIP"
] ++ lib.optionals useOpenCL [
"-DCMAKE_C_COMPILER=${clang}/bin/clang"
"-DCMAKE_CXX_COMPILER=${clang}/bin/clang++"
"-DMIOPEN_BACKEND=OpenCL"
] ++ lib.optionals buildTests [
"-DBUILD_TESTS=ON"
@ -137,37 +122,35 @@ in stdenv.mkDerivation (finalAttrs: {
"-DMIOPEN_TEST_GFX908=ON"
"-DMIOPEN_TEST_GFX90A=ON"
"-DMIOPEN_TEST_GFX103X=ON"
"-DGOOGLETEST_DIR=${gtest.src}" # Custom linker names
];
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "enable_testing()" "" \
--replace "MIOPEN_HIP_COMPILER MATCHES \".*clang\\\\+\\\\+$\"" "true" \
--replace "/opt/rocm/hip" "${hip}" \
--replace "/opt/rocm/llvm" "${llvm}" \
--replace "3 REQUIRED PATHS /opt/rocm)" "3 REQUIRED PATHS ${hip})" \
--replace "hip REQUIRED PATHS /opt/rocm" "hip REQUIRED PATHS ${hip}" \
--replace "rocblas REQUIRED PATHS /opt/rocm" "rocblas REQUIRED PATHS ${rocblas}" \
--replace "miopengemm PATHS /opt/rocm" "miopengemm PATHS ${miopengemm}" \
--replace "set(MIOPEN_TIDY_ERRORS ALL)" "" # Fix clang-tidy at some point
--replace "set(MIOPEN_TIDY_ERRORS ALL)" "" # error: missing required key 'key'
'' + lib.optionalString buildTests ''
substituteInPlace test/gtest/CMakeLists.txt \
--replace "enable_testing()" ""
'' + lib.optionalString (!buildTests) ''
substituteInPlace CMakeLists.txt \
--replace "add_subdirectory(test)" ""
'' + lib.optionalString fetchKDBs ''
cp -a ${kdbs.gfx1030_36} src/kernels/gfx1030_36.kdb
cp -a ${kdbs.gfx900_56} src/kernels/gfx900_56.kdb
cp -a ${kdbs.gfx900_64} src/kernels/gfx900_64.kdb
cp -a ${kdbs.gfx906_60} src/kernels/gfx906_60.kdb
cp -a ${kdbs.gfx906_64} src/kernels/gfx906_64.kdb
cp -a ${kdbs.gfx90878} src/kernels/gfx90878.kdb
cp -a ${kdbs.gfx90a68} src/kernels/gfx90a68.kdb
cp -a ${kdbs.gfx90a6e} src/kernels/gfx90a6e.kdb
ln -sf ${kdbs.gfx1030_36} src/kernels/gfx1030_36.kdb
ln -sf ${kdbs.gfx900_56} src/kernels/gfx900_56.kdb
ln -sf ${kdbs.gfx900_64} src/kernels/gfx900_64.kdb
ln -sf ${kdbs.gfx906_60} src/kernels/gfx906_60.kdb
ln -sf ${kdbs.gfx906_64} src/kernels/gfx906_64.kdb
ln -sf ${kdbs.gfx90878} src/kernels/gfx90878.kdb
ln -sf ${kdbs.gfx90a68} src/kernels/gfx90a68.kdb
ln -sf ${kdbs.gfx90a6e} src/kernels/gfx90a6e.kdb
'';
# Unfortunately, it seems like we have to call make on these manually
postBuild = lib.optionalString buildDocs ''
export HOME=$(mktemp -d)
make doc
make -j$NIX_BUILD_CORES doc
'' + lib.optionalString buildTests ''
make -j$NIX_BUILD_CORES check
'';
@ -180,7 +163,12 @@ in stdenv.mkDerivation (finalAttrs: {
'' + lib.optionalString buildTests ''
mkdir -p $test/bin
mv bin/test_* $test/bin
patchelf --set-rpath ${lib.makeLibraryPath (finalAttrs.buildInputs ++ [ hip ])}:$out/lib $test/bin/*
patchelf --set-rpath $out/lib:${lib.makeLibraryPath (finalAttrs.buildInputs ++
[ hip rocm-comgr ])} $test/bin/*
'' + lib.optionalString fetchKDBs ''
# Apparently gfx1030_40 wasn't generated so the developers suggest just renaming gfx1030_36 to it
# Should be fixed in the next miopen kernel generation batch
ln -s ${kdbs.gfx1030_36} $out/share/miopen/db/gfx1030_40.kdb
'';
passthru.updateScript = rocmUpdateScript {

View file

@ -5,7 +5,6 @@
, cmake
, rocm-cmake
, rocm-opencl-runtime
, clang
, texlive
, doxygen
, sphinx
@ -32,7 +31,7 @@ let
};
in stdenv.mkDerivation (finalAttrs: {
pname = "miopengemm";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -54,7 +53,6 @@ in stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
cmake
rocm-cmake
clang
];
buildInputs = [
@ -70,8 +68,6 @@ in stdenv.mkDerivation (finalAttrs: {
];
cmakeFlags = [
"-DCMAKE_C_COMPILER=clang"
"-DCMAKE_CXX_COMPILER=clang++"
# Manually define CMAKE_INSTALL_<DIR>
# See: https://github.com/NixOS/nixpkgs/pull/197838
"-DCMAKE_INSTALL_BINDIR=bin"
@ -121,6 +117,6 @@ in stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/ROCmSoftwarePlatform/MIOpenGEMM";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
broken = finalAttrs.version != clang.version;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -4,9 +4,6 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, rocm-smi
, hip
, gtest
@ -16,7 +13,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rccl";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -28,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCmSoftwarePlatform";
repo = "rccl";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-NbHzRmrUe4kJwkHZtZ+zHjIy2uk+dpN9caE0L5hUnbc=";
hash = "sha256-y9gTGk8LyX7owb2xdtb6VlnIXu/CYHOjnNa/wrNl02g=";
};
nativeBuildInputs = [
@ -38,9 +35,6 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
rocm-smi
gtest
] ++ lib.optionals buildTests [

View file

@ -0,0 +1,114 @@
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, cmake
, rocm-cmake
, rocblas
, rocsparse
, rocprim
, rocrand
, hip
, git
, openmp
, openmpi
, gtest
, buildTests ? false
, buildBenchmarks ? false
, buildSamples ? false
, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900:xnack-" "gfx906:xnack-" ... ]
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocalution";
version = "5.4.1";
outputs = [
"out"
] ++ lib.optionals buildTests [
"test"
] ++ lib.optionals buildBenchmarks [
"benchmark"
] ++ lib.optionals buildSamples [
"sample"
];
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
repo = "rocALUTION";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-jovhodhNa7tr1bSqpZCKI/9xF7Ie96JB+giqAEfis2k=";
};
nativeBuildInputs = [
cmake
rocm-cmake
hip
git
];
buildInputs = [
rocblas
rocsparse
rocprim
rocrand
openmp
openmpi
] ++ lib.optionals buildTests [
gtest
];
cmakeFlags = [
"-DCMAKE_CXX_COMPILER=hipcc"
"-DROCM_PATH=${hip}"
"-DHIP_ROOT_DIR=${hip}"
"-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 ++ [ hip ])} \
$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/ROCmSoftwarePlatform/rocALUTION";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
broken = finalAttrs.version != hip.version;
};
})

View file

@ -2,20 +2,17 @@
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, fetchpatch
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, hip
, python3
, tensile
, msgpack
, libxml2
, llvm
, gtest
, gfortran
, openmp
, amd-blis
, python3Packages
, buildTensile ? true
, buildTests ? false
@ -30,7 +27,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocblas";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
] ++ lib.optionals buildTests [
"test"
] ++ lib.optionals buildBenchmarks [
"benchmark"
];
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
@ -39,16 +44,6 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-4art8/KwH2KDLwSYcyzn/m/xwdg5wQQvgHks73aB+60=";
};
# We currently need this patch due to faulty toolchain includes
# See: https://github.com/ROCmSoftwarePlatform/rocBLAS/issues/1277
patches = [
(fetchpatch {
name = "only-std_norm-from-rocblas_complex.patch";
url = "https://github.com/ROCmSoftwarePlatform/rocBLAS/commit/44b99c6df26002139ca9ec68ee1fc8899c7b001f.patch";
hash = "sha256-vSZkVYY951fqfOThKFqnYBasWMblS6peEJZ6sFMCk9k=";
})
];
nativeBuildInputs = [
cmake
rocm-cmake
@ -56,19 +51,19 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
python3
] ++ lib.optionals buildTensile [
msgpack
libxml2
llvm
python3Packages.pyyaml
python3Packages.msgpack
] ++ lib.optionals buildTests [
gtest
] ++ lib.optionals (buildTests || buildBenchmarks) [
gfortran
openmp
amd-blis
] ++ lib.optionals (buildTensile || buildTests || buildBenchmarks) [
python3Packages.pyyaml
];
cmakeFlags = [
@ -95,12 +90,12 @@ stdenv.mkDerivation (finalAttrs: {
"-DBUILD_CLIENTS_TESTS=ON"
] ++ lib.optionals buildBenchmarks [
"-DBUILD_CLIENTS_BENCHMARKS=ON"
] ++ lib.optionals (buildTests || buildBenchmarks) [
"-DCMAKE_CXX_FLAGS=-I${amd-blis}/include/blis"
];
# Tensile REALLY wants to write to the nix directory if we include it normally
# We need to manually fixup the path so tensile will generate .co and .dat files
postPatch = lib.optionalString buildTensile ''
export PATH=${llvm}/bin:$PATH
cp -a ${tensile} tensile
chmod +w -R tensile
@ -113,6 +108,18 @@ stdenv.mkDerivation (finalAttrs: {
--replace "virtualenv_install(\''${Tensile_TEST_LOCAL_PATH})" ""
'';
postInstall = 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;
@ -124,8 +131,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/ROCmSoftwarePlatform/rocBLAS";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
# Tests and benchmarks are a can of worms that I will tackle in a different PR
# It involves completely rewriting the amd-blis derivation
broken = finalAttrs.version != hip.version || buildTests || buildBenchmarks;
broken = finalAttrs.version != hip.version;
};
})

View file

@ -1,4 +1,5 @@
{ lib, stdenv
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, rocmUpdateScript
@ -7,7 +8,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocclr";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
@ -26,18 +27,19 @@ stdenv.mkDerivation (finalAttrs: {
})
];
prePatch = ''
postPatch = ''
substituteInPlace device/comgrctx.cpp \
--replace "libamd_comgr.so" "${rocm-comgr}/lib/libamd_comgr.so"
'';
buildPhase = "";
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -r * $out/
cp -a * $out/
runHook postInstall
'';
@ -57,5 +59,6 @@ stdenv.mkDerivation (finalAttrs: {
# to be supported yet by the build infrastructure. Recheck in
# the future.
platforms = [ "x86_64-linux" ];
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -4,24 +4,21 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, hip
, openmp
, sqlite
, python3
, gtest
, boost
, fftw
, fftwFloat
, llvmPackages
, buildTests ? false
, buildBenchmarks ? false
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocfft";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -35,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "ROCmSoftwarePlatform";
repo = "rocFFT";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-XlpWT6PS+VpJjA4iG8yaiFRxE63kugNG1ZyQXoQVJL8=";
hash = "sha256-NsYeEoBQ/0z31ZQ32l7N+qavWEVkH37snkTHntot7nE=";
};
nativeBuildInputs = [
@ -45,9 +42,6 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
sqlite
python3
] ++ lib.optionals buildTests [
@ -56,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
boost
fftw
fftwFloat
llvmPackages.openmp
openmp
];
propogatedBuildInputs = lib.optionals buildTests [

View file

@ -3,14 +3,19 @@
, fetchFromGitHub
, rocmUpdateScript
, cmake
, clang
, rocm-cmake
, rocm-device-libs
, llvm
, libxml2
}:
stdenv.mkDerivation (finalAttrs: {
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 = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -19,21 +24,20 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-qLsrBTeSop7lIQv8gZDwgpvGZJOAq90zsvMi1QpfbAs=";
};
sourceRoot = "source/lib/comgr";
patches = [ ./cmake.patch ];
sourceRoot = "${finalAttrs.src.name}/lib/comgr";
nativeBuildInputs = [ cmake ];
buildInputs = [ clang rocm-device-libs llvm ];
cmakeFlags = [
"-DCMAKE_C_COMPILER=${clang}/bin/clang"
"-DCMAKE_CXX_COMPILER=${clang}/bin/clang++"
"-DCMAKE_PREFIX_PATH=${llvm}/lib/cmake/llvm"
"-DLLD_INCLUDE_DIRS=${llvm}/include"
"-DLLVM_TARGETS_TO_BUILD=\"AMDGPU;X86\""
nativeBuildInputs = [
cmake
rocm-cmake
];
patches = [ ./cmake.patch ];
buildInputs = [
rocm-device-libs
libxml2
];
cmakeFlags = [ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;X86" ];
passthru.updateScript = rocmUpdateScript {
name = finalAttrs.pname;
@ -47,5 +51,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.ncsa;
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -1,14 +1,20 @@
{ lib, stdenv
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, cmake
, clang
, llvm
, rocm-cmake
, libxml2
}:
stdenv.mkDerivation (finalAttrs: {
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 = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -17,17 +23,15 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-8gxvgy2GlROxM5qKtZVu5Lxa1FmTIVlBTpfp8rxhNhk=";
};
nativeBuildInputs = [ cmake ];
patches = [ ./cmake.patch ];
buildInputs = [ clang llvm ];
cmakeFlags = [
"-DCMAKE_PREFIX_PATH=${llvm}/lib/cmake/llvm;${llvm}/lib/cmake/clang"
"-DLLVM_TARGETS_TO_BUILD='AMDGPU;X86'"
"-DCLANG=${clang}/bin/clang"
nativeBuildInputs = [
cmake
rocm-cmake
];
patches = [ ./cmake.patch ];
buildInputs = [ libxml2 ];
cmakeFlags = [ "-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}" ];
passthru.updateScript = rocmUpdateScript {
name = finalAttrs.pname;
@ -41,5 +45,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.ncsa;
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -1,4 +1,8 @@
{ lib, callPackage, stdenv, rocm-opencl-runtime }:
{ lib
, stdenv
, callPackage
, rocm-opencl-runtime
}:
stdenv.mkDerivation rec {
pname = "rocm-opencl-icd";
@ -11,12 +15,12 @@ stdenv.mkDerivation rec {
echo "${rocm-opencl-runtime}/lib/libamdocl64.so" > $out/etc/OpenCL/vendors/amdocl64.icd
'';
passthru.impureTests = { rocm-opencl = callPackage ./test.nix {}; };
passthru.impureTests = { rocm-opencl = callPackage ./test.nix { }; };
meta = with lib; {
description = "OpenCL ICD definition for AMD GPUs using the ROCm stack";
license = licenses.mit;
maintainers = with maintainers; [ lovesegfault ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
};
}

View file

@ -1,28 +1,20 @@
{ stdenv
, lib
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, addOpenGLRunpath
, cmake
, rocm-cmake
, clang
, glew
, libglvnd
, libX11
, llvm
, mesa
, numactl
, python3
, rocclr
, rocm-comgr
, rocm-device-libs
, rocm-runtime
, rocm-thunk
, rocclr
, glew
, libX11
, numactl
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-opencl-runtime";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -31,27 +23,19 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-E1+Y/fgp5b+7H1LN+O1fwVi0/XRCgvsiSxTY3u/q+8I=";
};
nativeBuildInputs = [ cmake rocm-cmake ];
nativeBuildInputs = [ cmake ];
buildInputs = [
clang
glew
libglvnd
libX11
llvm
mesa
numactl
python3
rocm-comgr
rocm-device-libs
rocm-runtime
rocm-thunk
glew
libX11
numactl
];
cmakeFlags = [
"-DAMD_OPENCL_PATH=${finalAttrs.src}"
"-DROCCLR_PATH=${rocclr}"
"-DCPACK_PACKAGING_INSTALL_PREFIX=/opt/rocm/opencl"
];
dontStrip = true;
@ -80,5 +64,6 @@ stdenv.mkDerivation (finalAttrs: {
license = with licenses; [ asl20 mit ];
maintainers = with maintainers; [ acowley lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -1,36 +1,46 @@
{ stdenv
, lib
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, addOpenGLRunpath
, cmake
, pkg-config
, cmake
, xxd
, elfutils
, libdrm
, llvm
, numactl
, rocm-device-libs
, rocm-thunk }:
, rocm-thunk
, libelf
, libdrm
, numactl
, valgrind
, libxml2
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-runtime";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
repo = "ROCR-Runtime";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-M9kv1Oe5ZZfd9H/+KUJUoK9L1EdyS2qRp2mJDK0dnPE=";
hash = "sha256-JkTXTQmdESHSFbA6HZdMK3pYEApz9aoAlMzdXayzdyY=";
};
sourceRoot = "source/src";
sourceRoot = "${finalAttrs.src.name}/src";
nativeBuildInputs = [ cmake pkg-config xxd ];
nativeBuildInputs = [
pkg-config
cmake
xxd
];
buildInputs = [ elfutils libdrm llvm numactl ];
cmakeFlags = [ "-DCMAKE_PREFIX_PATH=${rocm-thunk}" ];
buildInputs = [
rocm-thunk
libelf
libdrm
numactl
valgrind
libxml2
];
postPatch = ''
patchShebangs image/blit_src/create_hsaco_ascii_file.sh
@ -45,7 +55,8 @@ stdenv.mkDerivation (finalAttrs: {
'';
fixupPhase = ''
rm -rf $out/hsa
rm -rf $out/hsa/*
ln -s $out/{include,lib} $out/hsa
'';
passthru.updateScript = rocmUpdateScript {
@ -59,5 +70,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/RadeonOpenCompute/ROCR-Runtime";
license = with licenses; [ ncsa ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -2,15 +2,17 @@
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, cmake
, pkg-config
, cmake
, rocm-cmake
, libdrm
, numactl
, valgrind
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-thunk";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -19,24 +21,25 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-EU5toaKzVeZpdm/YhaQ0bXq0eoYwYQ5qGLUJzxgZVjE=";
};
preConfigure = ''
export cmakeFlags="$cmakeFlags "
'';
nativeBuildInputs = [
pkg-config
cmake
rocm-cmake
];
nativeBuildInputs = [ cmake pkg-config ];
buildInputs = [
libdrm
numactl
valgrind
];
buildInputs = [ libdrm numactl ];
# https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface/issues/75
postPatch = ''
substituteInPlace libhsakmt.pc.in \
--replace '$'{prefix}/@CMAKE_INSTALL_LIBDIR@ @CMAKE_INSTALL_FULL_LIBDIR@ \
--replace '$'{prefix}/@CMAKE_INSTALL_INCLUDEDIR@ @CMAKE_INSTALL_FULL_INCLUDEDIR@
'';
postInstall = ''
cp -r $src/include $out
'';
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;
@ -49,5 +52,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/RadeonOpenCompute/ROCT-Thunk-Interface";
license = with licenses; [ bsd2 mit ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -3,17 +3,36 @@
, fetchFromGitHub
, rocmUpdateScript
, cmake
, clang
, ninja
, hip
, rocminfo
, git
, libxml2
, libedit
, zlib
, ncurses
, python3
, buildRockCompiler ? false
}:
stdenv.mkDerivation (finalAttrs: {
# 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
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";
version = "5.4.0";
outputs = [
"out"
] ++ lib.optionals (!buildRockCompiler) [
"external"
];
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
repo = "rocMLIR";
@ -23,7 +42,9 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
cmake
clang
ninja
] ++ lib.optionals (!buildRockCompiler) [
hip
];
buildInputs = [
@ -33,12 +54,39 @@ stdenv.mkDerivation (finalAttrs: {
python3
];
cmakeFlags = [
"-DCMAKE_C_COMPILER=clang"
"-DCMAKE_CXX_COMPILER=clang++"
"-DBUILD_FAT_LIBROCKCOMPILER=ON"
propagatedBuildInputs = [
zlib
ncurses
];
cmakeFlags = [
"-DLLVM_TARGETS_TO_BUILD=AMDGPU;${llvmNativeTarget}"
"-DLLVM_ENABLE_ZLIB=ON"
"-DLLVM_ENABLE_TERMINFO=ON"
] ++ lib.optionals buildRockCompiler [
"-DBUILD_FAT_LIBROCKCOMPILER=ON"
] ++ lib.optionals (!buildRockCompiler) [
"-DROCM_PATH=${rocminfo}"
"-DROCM_TEST_CHIPSET=gfx000"
];
dontBuild = true;
doCheck = true;
# Certain libs aren't being generated, try enabling tests next update
checkTarget = if buildRockCompiler
then "librockCompiler"
else "check-mlir-miopen-build-only";
postInstall = let
libPath = lib.makeLibraryPath [ zlib ncurses hip 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;
@ -52,6 +100,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/ROCmSoftwarePlatform/rocMLIR";
license = with licenses; [ asl20 ];
maintainers = teams.rocm.members;
broken = finalAttrs.version != clang.version;
# Once again, they haven't updated the tags...
broken = lib.versions.minor finalAttrs.version != lib.versions.minor stdenv.cc.version;
};
})

View file

@ -4,9 +4,6 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, hip
, gtest
, gbenchmark
@ -16,7 +13,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocprim";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -39,11 +36,7 @@ stdenv.mkDerivation (finalAttrs: {
hip
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
] ++ lib.optionals buildTests [
buildInputs = lib.optionals buildTests [
gtest
] ++ lib.optionals buildBenchmarks [
gbenchmark

View file

@ -0,0 +1,20 @@
diff --git a/src/util/hsa_rsrc_factory.cpp b/src/util/hsa_rsrc_factory.cpp
index 643ff16..c08d98f 100644
--- a/src/util/hsa_rsrc_factory.cpp
+++ b/src/util/hsa_rsrc_factory.cpp
@@ -127,15 +127,6 @@ HsaRsrcFactory::HsaRsrcFactory(bool initialize_hsa) : initialize_hsa_(initialize
if (cpu_pool_ == NULL) CHECK_STATUS("CPU memory pool is not found", HSA_STATUS_ERROR);
if (kern_arg_pool_ == NULL) CHECK_STATUS("Kern-arg memory pool is not found", HSA_STATUS_ERROR);
- // Get AqlProfile API table
- aqlprofile_api_ = {0};
-#ifdef ROCP_LD_AQLPROFILE
- status = LoadAqlProfileLib(&aqlprofile_api_);
-#else
- status = hsa_api_.hsa_system_get_major_extension_table(HSA_EXTENSION_AMD_AQLPROFILE, hsa_ven_amd_aqlprofile_VERSION_MAJOR, sizeof(aqlprofile_api_), &aqlprofile_api_);
-#endif
- CHECK_STATUS("aqlprofile API table load failed", status);
-
// Get Loader API table
loader_api_ = {0};
status = hsa_api_.hsa_system_get_major_extension_table(HSA_EXTENSION_AMD_LOADER, 1, sizeof(loader_api_), &loader_api_);

View file

@ -0,0 +1,65 @@
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, cmake
, rocm-runtime
, rocm-thunk
, roctracer
, numactl
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocprofiler";
version = "5.4.1";
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "rocprofiler";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-CpD/+soMN8WTeSb5X7dsnZ596PMkw+4EVsVSvFtKCak=";
};
patches = [ ./0000-dont-require-hsa_amd_aqlprofile.patch ];
nativeBuildInputs = [ cmake ];
buildInputs = [
rocm-thunk
rocm-runtime
numactl
];
cmakeFlags = [
"-DPROF_API_HEADER_PATH=${roctracer.src}/inc/ext"
# 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 test
substituteInPlace cmake_modules/env.cmake \
--replace "FATAL_ERROR \"AQL_PROFILE" "WARNING \"AQL_PROFILE"
'';
postInstall = ''
patchelf --set-rpath $out/lib:${lib.makeLibraryPath finalAttrs.buildInputs} $out/lib/rocprofiler/librocprof-tool.so
'';
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-Developer-Tools/rocprofiler";
license = with licenses; [ mit ]; # mitx11
maintainers = teams.rocm.members;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -4,9 +4,6 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, hip
, gtest
, gbenchmark
@ -16,7 +13,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocrand";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -40,11 +37,7 @@ stdenv.mkDerivation (finalAttrs: {
hip
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
] ++ lib.optionals buildTests [
buildInputs = lib.optionals buildTests [
gtest
] ++ lib.optionals buildBenchmarks [
gbenchmark

View file

@ -0,0 +1,92 @@
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, cmake
, rocm-cmake
, rocblas
, hip
, fmt
, gtest
, gfortran
, lapack-reference
, buildTests ? false
, buildBenchmarks ? false
, gpuTargets ? [ ] # gpuTargets = [ "gfx803" "gfx900" "gfx906:xnack-" ]
}:
stdenv.mkDerivation (finalAttrs: {
pname = "rocsolver";
version = "5.4.1";
outputs = [
"out"
] ++ lib.optionals buildTests [
"test"
] ++ lib.optionals buildBenchmarks [
"benchmark"
];
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
repo = "rocSOLVER";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-UHUcA9CVPuYFpE2DTvRrRMMj51yNPo5wMTKnByL2RTg=";
};
nativeBuildInputs = [
cmake
rocm-cmake
hip
] ++ lib.optionals (buildTests || buildBenchmarks) [
gfortran
];
buildInputs = [
rocblas
fmt
] ++ lib.optionals buildTests [
gtest
] ++ lib.optionals (buildTests || buildBenchmarks) [
lapack-reference
];
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_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;
};
meta = with lib; {
description = "ROCm LAPACK implementation";
homepage = "https://github.com/ROCmSoftwarePlatform/rocSOLVER";
license = with licenses; [ bsd2 ];
maintainers = teams.rocm.members;
broken = finalAttrs.version != hip.version;
};
})

View file

@ -5,9 +5,6 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, rocprim
, hip
, gfortran
@ -21,7 +18,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocsparse";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
@ -46,9 +43,6 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
rocprim
git
] ++ lib.optionals (buildTests || buildBenchmarks) [

View file

@ -4,9 +4,6 @@
, rocmUpdateScript
, cmake
, rocm-cmake
, rocm-runtime
, rocm-device-libs
, rocm-comgr
, rocprim
, hip
, gtest
@ -16,16 +13,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocthrust";
version = "5.4.0";
version = "5.4.1";
# Comment out these outputs until tests/benchmarks are fixed (upstream?)
# outputs = [
# "out"
# ] ++ lib.optionals buildTests [
# "test"
# ] ++ lib.optionals buildBenchmarks [
# "benchmark"
# ];
outputs = [
"out"
] ++ lib.optionals buildTests [
"test"
] ++ lib.optionals buildBenchmarks [
"benchmark"
];
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
@ -41,11 +37,7 @@ stdenv.mkDerivation (finalAttrs: {
hip
];
buildInputs = [
rocm-runtime
rocm-device-libs
rocm-comgr
] ++ lib.optionals buildTests [
buildInputs = lib.optionals buildTests [
gtest
];
@ -61,18 +53,19 @@ stdenv.mkDerivation (finalAttrs: {
"-DBUILD_TEST=ON"
] ++ lib.optionals buildBenchmarks [
"-DBUILD_BENCHMARKS=ON"
] ++ lib.optionals (buildTests || buildBenchmarks) [
"-DCMAKE_CXX_FLAGS=-Wno-deprecated-builtins" # Too much spam
];
# Comment out these outputs until tests/benchmarks are fixed (upstream?)
# postInstall = lib.optionalString buildTests ''
# mkdir -p $test/bin
# mv $out/bin/test_* $test/bin
# '' + lib.optionalString buildBenchmarks ''
# mkdir -p $benchmark/bin
# mv $out/bin/benchmark_* $benchmark/bin
# '' + lib.optionalString (buildTests || buildBenchmarks) ''
# rmdir $out/bin
# '';
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;
@ -85,8 +78,6 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/ROCmSoftwarePlatform/rocThrust";
license = with licenses; [ asl20 ];
maintainers = teams.rocm.members;
# Tests/Benchmarks don't seem to work, thousands of errors compiling with no clear fix
# Is this an upstream issue? We don't seem to be missing dependencies
broken = finalAttrs.version != hip.version || buildTests || buildBenchmarks;
broken = finalAttrs.version != hip.version;
};
})

View file

@ -0,0 +1,100 @@
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, cmake
, clang
, hip
, rocm-device-libs
, rocprofiler
, libxml2
, doxygen
, graphviz
, gcc-unwrapped
, rocm-runtime
, python3Packages
, buildDocs ? false # Nothing seems to be generated, so not making the output
, buildTests ? false
}:
stdenv.mkDerivation (finalAttrs: {
pname = "roctracer";
version = "5.4.1";
outputs = [
"out"
] ++ lib.optionals buildDocs [
"doc"
] ++ lib.optionals buildTests [
"test"
];
src = fetchFromGitHub {
owner = "ROCm-Developer-Tools";
repo = "roctracer";
rev = "rocm-${finalAttrs.version}";
hash = "sha256-5vYUNczylB2ehlvhq1u/H8KUXt8ku2E+jawKrKsU7LY=";
};
nativeBuildInputs = [
cmake
clang
hip
] ++ lib.optionals buildDocs [
doxygen
graphviz
];
buildInputs = [
rocm-device-libs
rocprofiler
libxml2
python3Packages.python
python3Packages.cppheaderparser
];
cmakeFlags = [
"-DCMAKE_MODULE_PATH=${hip}/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"
];
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 ++ [ hip 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-Developer-Tools/roctracer";
license = with licenses; [ mit ]; # mitx11
maintainers = teams.rocm.members;
broken = finalAttrs.version != hip.version;
};
})

View file

@ -1,19 +1,31 @@
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 7e0f2c8..db54eab 100644
index e1160bb..2a5462e 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -31,14 +31,6 @@ cmake_dependent_option( ROCWMMA_BUILD_BENCHMARK_TESTS "Build benchmarking tests"
@@ -30,26 +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
-# Test/benchmark requires additional dependencies
-include( FetchContent )
-
-FetchContent_Declare(
- googletest
- URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
- GIT_REPOSITORY https://github.com/google/googletest.git
- GIT_TAG 609281088cfefc76f9d0ce82e1ff6c30cc3591e5
-)
-FetchContent_MakeAvailable(googletest)
-
include(GoogleTest)
-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_DIR ${CMAKE_CURRENT_SOURCE_DIR})
set(ROCWMMA_TEST_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR})
set(ROCWMMA_COMMON_TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/hip_device.cpp

View file

@ -14,6 +14,8 @@
, python3Packages
, buildDocs ? true
, buildTests ? false
, buildExtendedTests ? false
, buildBenchmarks ? false
, buildSamples ? false
, gpuTargets ? [ ] # gpuTargets = [ "gfx908:xnack-" "gfx90a:xnack-" "gfx90a:xnack+" ... ]
}:
@ -34,14 +36,16 @@ let
};
in stdenv.mkDerivation (finalAttrs: {
pname = "rocwmma";
version = "5.4.0";
version = "5.4.1";
outputs = [
"out"
] ++ lib.optionals buildDocs [
"doc"
] ++ lib.optionals buildTests [
] ++ lib.optionals (buildTests || buildBenchmarks) [
"test"
] ++ lib.optionals buildBenchmarks [
"benchmark"
] ++ lib.optionals buildSamples [
"sample"
];
@ -53,7 +57,7 @@ in stdenv.mkDerivation (finalAttrs: {
hash = "sha256-HUJPb6IahBgl/v+W4kXludBTNAjRm8k6v0jxKAX+qZM=";
};
patches = lib.optionals buildTests [
patches = lib.optionals (buildTests || buildBenchmarks) [
./0000-dont-fetch-googletest.patch
];
@ -65,7 +69,7 @@ in stdenv.mkDerivation (finalAttrs: {
buildInputs = [
openmp
] ++ lib.optionals buildTests [
] ++ lib.optionals (buildTests || buildBenchmarks) [
gtest
rocblas
] ++ lib.optionals buildDocs [
@ -78,8 +82,10 @@ in stdenv.mkDerivation (finalAttrs: {
cmakeFlags = [
"-DCMAKE_CXX_COMPILER=hipcc"
"-DROCWMMA_BUILD_TESTS=${if buildTests then "ON" else "OFF"}"
"-DROCWMMA_BUILD_TESTS=${if buildTests || buildBenchmarks then "ON" else "OFF"}"
"-DROCWMMA_BUILD_VALIDATION_TESTS=ON"
"-DROCWMMA_BUILD_SAMPLES=${if buildSamples then "ON" else "OFF"}"
"-DROCWMMA_VALIDATE_WITH_ROCBLAS=ON"
# Manually define CMAKE_INSTALL_<DIR>
# See: https://github.com/NixOS/nixpkgs/pull/197838
"-DCMAKE_INSTALL_BINDIR=bin"
@ -87,11 +93,10 @@ in stdenv.mkDerivation (finalAttrs: {
"-DCMAKE_INSTALL_INCLUDEDIR=include"
] ++ lib.optionals (gpuTargets != [ ]) [
"-DGPU_TARGETS=${lib.concatStringsSep ";" gpuTargets}"
] ++ lib.optionals buildTests [
"-DROCWMMA_BUILD_VALIDATION_TESTS=ON"
"-DROCWMMA_BUILD_BENCHMARK_TESTS=ON"
] ++ lib.optionals buildExtendedTests [
"-DROCWMMA_BUILD_EXTENDED_TESTS=ON"
"-DROCWMMA_VALIDATE_WITH_ROCBLAS=ON"
] ++ lib.optionals buildBenchmarks [
"-DROCWMMA_BUILD_BENCHMARK_TESTS=ON"
"-DROCWMMA_BENCHMARK_WITH_ROCBLAS=ON"
];
@ -109,16 +114,19 @@ in stdenv.mkDerivation (finalAttrs: {
postInstall = lib.optionalString buildDocs ''
mv ../docs/source/_build/html $out/share/doc/rocwmma
mv ../docs/source/_build/latex/rocWMMA.pdf $out/share/doc/rocwmma
'' + lib.optionalString buildTests ''
'' + lib.optionalString (buildTests || buildBenchmarks) ''
mkdir -p $test/bin
mv $out/bin/*_test* $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 || buildSamples) ''
rmdir $out/bin
'' + lib.optionalString (buildTests || buildBenchmarks || buildSamples) ''
rm -rf $out/bin
'';
passthru.updateScript = rocmUpdateScript {
@ -132,8 +140,6 @@ in stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/ROCmSoftwarePlatform/rocWMMA";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
# Building tests isn't working for now
# undefined reference to symbol '_ZTIN7testing4TestE'
broken = finalAttrs.version != hip.version || buildTests;
broken = finalAttrs.version != hip.version;
};
})

View file

@ -10,7 +10,7 @@
buildPythonPackage rec {
pname = "tensile";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "ROCmSoftwarePlatform";
@ -36,5 +36,6 @@ buildPythonPackage rec {
homepage = "https://github.com/ROCmSoftwarePlatform/Tensile";
license = with licenses; [ mit ];
maintainers = teams.rocm.members;
broken = version != stdenv.cc.version;
};
}

View file

@ -36,6 +36,9 @@ buildPythonPackage rec {
postPatch = ''
substituteInPlace "sphinx_automodapi/tests/helpers.py" \
--replace '[0]), None)' "[0]), (None, '${testInventory}'))"
substituteInPlace "sphinx_automodapi/tests/test_cases.py" \
--replace '[0]), None)' "[0]), (None, '${testInventory}'))"
'';
checkInputs = [

View file

@ -0,0 +1,30 @@
{ lib
, buildPythonPackage
, fetchPypi
, sphinx
, markdown
}:
buildPythonPackage rec {
pname = "sphinx-markdown-tables";
version = "0.0.17";
src = fetchPypi {
inherit pname version;
hash = "sha256-a8bT1ADqzP7r0ohEa8CN2DCDNnxYuF1A/mwS1371kvE=";
};
propagatedBuildInputs = [
sphinx
markdown
];
pythonImportsCheck = [ "sphinx_markdown_tables" ];
meta = with lib; {
description = "Sphinx extension for rendering tables written in markdown";
homepage = "https://github.com/ryanfox/sphinx-markdown-tables";
maintainers = with maintainers; [ Madouura ];
license = licenses.gpl3;
};
}

View file

@ -1,4 +1,4 @@
{ runtimeShell
{ lib
, writeScript
}:
@ -10,6 +10,11 @@
}:
let
pname =
if lib.hasPrefix "rocm-llvm-" name
then "llvmPackages_rocm.${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
@ -22,6 +27,6 @@ let
version="''${version}.0"
fi
update-source-version ${name} "$version" --ignore-same-hash
update-source-version ${pname} "$version" --ignore-same-hash
'';
in [ updateScript ]

View file

@ -7,7 +7,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-cmake";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -30,5 +30,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.mit;
maintainers = teams.rocm.members;
platforms = platforms.unix;
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -2,11 +2,11 @@
python3.pkgs.buildPythonApplication rec {
pname = "lit";
version = "14.0.0";
version = "15.0.6";
src = python3.pkgs.fetchPypi {
inherit pname version;
sha256 = "45e08ce87b0ea56ab632aa02fa857418a5dd241a711c7c756878b73a130c3efe";
hash = "sha256-S06OQfDmDyutls21HxyQ016ku3FTTsDOP8Di67d9f+k=";
};
passthru = {
@ -14,6 +14,9 @@ python3.pkgs.buildPythonApplication rec {
};
# Non-standard test suite. Needs custom checkPhase.
# Needs LLVM's `FileCheck` and `not`: `$out/bin/lit tests`
# There should be `llvmPackages.lit` since older LLVM versions may
# have the possibility of not correctly interfacing with newer lit versions
doCheck = false;
meta = {

View file

@ -1,13 +1,12 @@
{ stdenv
, lib
{ lib
, stdenv
, fetchFromGitHub
, rocmUpdateScript
, fetchpatch
, cmake
, rocm-runtime
, python3
, 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
@ -19,7 +18,7 @@
}:
stdenv.mkDerivation (finalAttrs: {
version = "5.4.0";
version = "5.4.1";
pname = "rocminfo";
src = fetchFromGitHub {
@ -29,25 +28,21 @@ stdenv.mkDerivation (finalAttrs: {
sha256 = "sha256-4wZTm5AZgG8xEd6uYqxWq4bWZgcSYZ2WYA1z4RAPF8U=";
};
enableParallelBuilding = true;
nativeBuildInputs = [ cmake ];
buildInputs = [ rocm-cmake rocm-runtime ];
cmakeFlags = [
"-DROCM_DIR=${rocm-runtime}"
"-DROCRTST_BLD_TYPE=Release"
nativeBuildInputs = [
cmake
rocm-cmake
];
buildInputs = [ rocm-runtime ];
propagatedBuildInputs = [ python3 ];
cmakeFlags = [ "-DROCRTST_BLD_TYPE=Release" ];
prePatch = ''
sed 's,#!/usr/bin/env python3,#!${python3}/bin/python,' -i rocm_agent_enumerator
patchShebangs rocm_agent_enumerator
sed 's,lsmod | grep ,${busybox}/bin/lsmod | ${gnugrep}/bin/grep ,' -i rocminfo.cc
'';
installPhase = ''
mkdir -p $out/bin
cp rocminfo $out/bin
cp rocm_agent_enumerator $out/bin
'' + lib.optionalString (defaultTargets != []) ''
postInstall = lib.optionalString (defaultTargets != [ ]) ''
echo '${lib.concatStringsSep "\n" defaultTargets}' > $out/bin/target.lst
'';
@ -63,6 +58,6 @@ stdenv.mkDerivation (finalAttrs: {
license = licenses.ncsa;
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = platforms.linux;
broken = stdenv.isAarch64;
broken = stdenv.isAarch64 || finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -8,7 +8,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rocm-smi";
version = "5.4.0";
version = "5.4.1";
src = fetchFromGitHub {
owner = "RadeonOpenCompute";
@ -37,5 +37,6 @@ stdenv.mkDerivation (finalAttrs: {
license = with licenses; [ mit ];
maintainers = with maintainers; [ lovesegfault ] ++ teams.rocm.members;
platforms = [ "x86_64-linux" ];
broken = finalAttrs.version != stdenv.cc.version;
};
})

View file

@ -13845,6 +13845,7 @@ with pkgs;
clangStdenv = if stdenv.cc.isClang then stdenv else lowPrio llvmPackages.stdenv;
clang-sierraHack-stdenv = overrideCC stdenv buildPackages.clang-sierraHack;
libcxxStdenv = if stdenv.isDarwin then stdenv else lowPrio llvmPackages.libcxxStdenv;
rocmClangStdenv = llvmPackages_rocm.rocmClangStdenv;
clasp-common-lisp = callPackage ../development/compilers/clasp {
llvmPackages = llvmPackages_6;
@ -15136,83 +15137,157 @@ with pkgs;
rml = callPackage ../development/compilers/rml { };
composable_kernel = callPackage ../development/libraries/composable_kernel {
inherit (llvmPackages) openmp;
inherit (llvmPackages_rocm) openmp clang-tools-extra;
stdenv = rocmClangStdenv;
};
rocprofiler = callPackage ../development/libraries/rocprofiler {
stdenv = rocmClangStdenv;
};
clang-ocl = callPackage ../development/libraries/clang-ocl {
inherit (llvmPackages_rocm) clang;
stdenv = rocmClangStdenv;
};
rgxg = callPackage ../tools/text/rgxg { };
rocclr = callPackage ../development/libraries/rocclr { };
hip = callPackage ../development/compilers/hip {
inherit (llvmPackages_rocm) clang llvm;
rocclr = callPackage ../development/libraries/rocclr {
stdenv = rocmClangStdenv;
};
hipcub = callPackage ../development/libraries/hipcub { };
hip-common = callPackage ../development/compilers/hip-common {
inherit (llvmPackages_rocm) llvm;
stdenv = rocmClangStdenv;
};
hipsparse = callPackage ../development/libraries/hipsparse { };
hipcc = callPackage ../development/compilers/hipcc {
inherit (llvmPackages_rocm) llvm;
stdenv = rocmClangStdenv;
};
rccl = callPackage ../development/libraries/rccl { };
hip = callPackage ../development/compilers/hip {
inherit (llvmPackages_rocm) llvm;
inherit (cudaPackages) cudatoolkit;
stdenv = rocmClangStdenv;
};
rocm-cmake = callPackage ../development/tools/build-managers/rocm-cmake { };
hip-amd = hip.override {
useNVIDIA = false;
};
hip-nvidia = hip.override {
useNVIDIA = true;
};
hipcub = callPackage ../development/libraries/hipcub {
stdenv = rocmClangStdenv;
};
hipsparse = callPackage ../development/libraries/hipsparse {
inherit (llvmPackages_rocm) openmp;
stdenv = rocmClangStdenv;
};
rccl = callPackage ../development/libraries/rccl {
stdenv = rocmClangStdenv;
};
rocm-cmake = callPackage ../development/tools/build-managers/rocm-cmake {
stdenv = rocmClangStdenv;
};
rocm-comgr = callPackage ../development/libraries/rocm-comgr {
inherit (llvmPackages_rocm) clang llvm;
stdenv = rocmClangStdenv;
};
rocalution = callPackage ../development/libraries/rocalution {
inherit (llvmPackages_rocm) openmp;
stdenv = rocmClangStdenv;
};
rocm-device-libs = callPackage ../development/libraries/rocm-device-libs {
inherit (llvmPackages_rocm) clang llvm;
stdenv = rocmClangStdenv;
};
rocm-opencl-icd = callPackage ../development/libraries/rocm-opencl-icd { };
rocm-opencl-icd = callPackage ../development/libraries/rocm-opencl-icd {
stdenv = rocmClangStdenv;
};
rocsolver = callPackage ../development/libraries/rocsolver {
stdenv = rocmClangStdenv;
};
rocm-opencl-runtime = callPackage ../development/libraries/rocm-opencl-runtime {
inherit (llvmPackages_rocm) clang llvm;
stdenv = rocmClangStdenv;
};
rocm-runtime = callPackage ../development/libraries/rocm-runtime {
inherit (llvmPackages_rocm) llvm;
stdenv = rocmClangStdenv;
};
rocm-smi = python3Packages.callPackage ../tools/system/rocm-smi { };
rocm-smi = python3Packages.callPackage ../tools/system/rocm-smi {
stdenv = rocmClangStdenv;
};
rocm-thunk = callPackage ../development/libraries/rocm-thunk { };
rocm-thunk = callPackage ../development/libraries/rocm-thunk {
stdenv = rocmClangStdenv;
};
rocminfo = callPackage ../development/tools/rocminfo { };
rocminfo = callPackage ../development/tools/rocminfo {
stdenv = rocmClangStdenv;
};
rocmlir = callPackage ../development/libraries/rocmlir {
inherit (llvmPackages_rocm) clang;
stdenv = rocmClangStdenv;
};
rocprim = callPackage ../development/libraries/rocprim { };
rocmlir-rock = rocmlir.override {
buildRockCompiler = true;
};
rocsparse = callPackage ../development/libraries/rocsparse { };
rocprim = callPackage ../development/libraries/rocprim {
stdenv = rocmClangStdenv;
};
rocfft = callPackage ../development/libraries/rocfft { };
rocsparse = callPackage ../development/libraries/rocsparse {
stdenv = rocmClangStdenv;
};
rocrand = callPackage ../development/libraries/rocrand { };
rocfft = callPackage ../development/libraries/rocfft {
inherit (llvmPackages_rocm) openmp;
stdenv = rocmClangStdenv;
};
tensile = python3Packages.callPackage ../development/libraries/tensile { };
rocrand = callPackage ../development/libraries/rocrand {
stdenv = rocmClangStdenv;
};
tensile = python3Packages.callPackage ../development/libraries/tensile {
stdenv = rocmClangStdenv;
};
rocwmma = callPackage ../development/libraries/rocwmma {
inherit (llvmPackages) openmp;
inherit (llvmPackages_rocm) openmp;
stdenv = rocmClangStdenv;
};
rocblas = callPackage ../development/libraries/rocblas {
inherit (llvmPackages_rocm) llvm;
inherit (llvmPackages_rocm) openmp;
stdenv = rocmClangStdenv;
};
miopengemm = callPackage ../development/libraries/miopengemm {
inherit (llvmPackages_rocm) clang;
stdenv = rocmClangStdenv;
};
rocthrust = callPackage ../development/libraries/rocthrust { };
rocthrust = callPackage ../development/libraries/rocthrust {
stdenv = rocmClangStdenv;
};
miopen = callPackage ../development/libraries/miopen {
inherit (llvmPackages_rocm) clang llvm;
inherit (llvmPackages_rocm) llvm clang-tools-extra;
stdenv = rocmClangStdenv;
rocmlir = rocmlir-rock;
boost = boost.override { enableStatic = true; };
};
@ -15226,6 +15301,11 @@ with pkgs;
rocmUpdateScript = callPackage ../development/rocm-modules/update-script { };
# Requires GCC
roctracer = callPackage ../development/libraries/roctracer {
inherit (llvmPackages_rocm) clang;
};
rtags = callPackage ../development/tools/rtags {
inherit (darwin) apple_sdk;
};

View file

@ -10571,7 +10571,9 @@ self: super: with self; {
spinners = callPackage ../development/python-modules/spinners { };
sphinx-automodapi = callPackage ../development/python-modules/sphinx-automodapi { };
sphinx-automodapi = callPackage ../development/python-modules/sphinx-automodapi {
graphviz = pkgs.graphviz;
};
sphinx-better-theme = callPackage ../development/python-modules/sphinx-better-theme { };
@ -10677,6 +10679,8 @@ self: super: with self; {
sphinx-markdown-parser = callPackage ../development/python-modules/sphinx-markdown-parser { };
sphinx-markdown-tables = callPackage ../development/python-modules/sphinx-markdown-tables { };
sphinx-material = callPackage ../development/python-modules/sphinx-material { };
sphinx-navtree = callPackage ../development/python-modules/sphinx-navtree { };