mirror of
https://github.com/CHN-beta/nixos.git
synced 2026-01-12 04:39:23 +08:00
some fix
This commit is contained in:
@@ -5,8 +5,8 @@
|
||||
{
|
||||
src = pkgs.fetchurl
|
||||
{
|
||||
url = "https://developer.download.nvidia.com/hpc-sdk/24.11/nvhpc_2024_2411_Linux_x86_64_cuda_12.6.tar.gz";
|
||||
sha256 = "080rb89p2z98b75wqssvp3s8x6b5n0556d0zskh3cfapcb08lh1r";
|
||||
url = "https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64/nvhpc-24-11_24.11-0_amd64.deb";
|
||||
sha256 = "0xzfgdz7s8kzxmcm3k6n9nqd0isfzj23nxfq0y3ca9f046gp4zp3";
|
||||
};
|
||||
version = "24.11";
|
||||
};
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ src, stdenv, gcc, glibc_multi, autoPatchelfHook, libz, wrapCCWith, config, gfortran, overrideCC, zstd, libxml2, symlinkJoin, flock, glibc, binutils, writeText, addAttrsToDerivation, iconv, rdma-core, numactl, ncurses }:
|
||||
{ src, stdenv, gcc, glibc_multi, autoPatchelfHook, libz, wrapCCWith, config, gfortran, overrideCC, zstd, libxml2, symlinkJoin, flock, glibc, binutils, writeText, addAttrsToDerivation, iconv, rdma-core, numactl, ncurses, dpkg }:
|
||||
let
|
||||
gcc-combined = symlinkJoin
|
||||
{
|
||||
@@ -12,51 +12,57 @@ let
|
||||
# gcc.cc gfortran.cc gfortran.cc.lib
|
||||
];
|
||||
};
|
||||
unwrapped = stdenv.mkDerivation
|
||||
nvhpc = stdenv.mkDerivation
|
||||
{
|
||||
pname = "nvhpc-unwrapped";
|
||||
pname = "nvhpc";
|
||||
inherit (src) src version;
|
||||
buildInputs = [ glibc_multi gcc.cc.lib libz libxml2 zstd numactl ncurses ];
|
||||
nativeBuildInputs = [ autoPatchelfHook dpkg flock ];
|
||||
langFortran = true;
|
||||
buildInputs = [ gcc-combined libz libxml2 zstd numactl ncurses ];
|
||||
nativeBuildInputs = [ autoPatchelfHook flock ];
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
dontStrip = true;
|
||||
dontShrink = true;
|
||||
unpackPhase =
|
||||
''
|
||||
dpkg-deb -x $src .
|
||||
'';
|
||||
installPhase =
|
||||
''
|
||||
# install component
|
||||
# NVHPC use very complex mechanism to identify the location of compilers, headers, etc.
|
||||
# we should keep the original structure
|
||||
mkdir -p $out/opt/nvhpc/Linux_x86_64/${src.version}
|
||||
cp -r install_components/Linux_x86_64/${src.version}/compilers $out/opt/nvhpc/Linux_x86_64/${src.version}
|
||||
ln -s $out/opt/nvhpc/Linux_x86_64/${src.version}/compilers/bin $out
|
||||
|
||||
# create localrc
|
||||
patchShebangs $out/opt/nvhpc/Linux_x86_64/${src.version}/compilers/bin/makelocalrc
|
||||
sed -i '/makelocalrc executed by/d' $out/opt/nvhpc/Linux_x86_64/${src.version}/compilers/bin/makelocalrc
|
||||
$out/opt/nvhpc/Linux_x86_64/${src.version}/compilers/bin/makelocalrc -x
|
||||
mkdir -p $out/opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}/
|
||||
cp -r opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}/compilers $out/opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}
|
||||
'';
|
||||
postFixup =
|
||||
''
|
||||
sed -i '/makelocalrc executed by/d' $out/opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}/compilers/bin/makelocalrc
|
||||
$out/opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}/compilers/bin/makelocalrc $out/opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}/compilers/bin -x -no-cuda
|
||||
ln -s $out/opt/nvidia/hpc_sdk/Linux_x86_64/${src.version}/compilers/bin $out
|
||||
'';
|
||||
};
|
||||
# fix /usr/lib/crt1.o impure path used in link
|
||||
customLocalrc = writeText "localrc"
|
||||
''
|
||||
set DEFLIBDIR=${gcc-combined}/lib;
|
||||
set DEFSTDOBJDIR=${gcc-combined}/lib;
|
||||
set DEFLIBDIR=${glibc_multi}/lib;
|
||||
set DEFSTDOBJDIR=${glibc_multi}/lib;
|
||||
'';
|
||||
cudaCapability = builtins.concatStringsSep ","
|
||||
(builtins.map (cap: "cc${builtins.replaceStrings ["."] [""] cap}") config.cudaCapabilities);
|
||||
nvhpc = (wrapCCWith
|
||||
wrapper = (wrapCCWith
|
||||
{
|
||||
cc = unwrapped;
|
||||
cc = nvhpc;
|
||||
extraBuildCommands =
|
||||
''
|
||||
# echo "-isystem ${unwrapped}/include" >> $out/nix-support/cc-cflags
|
||||
# echo "-L${stdenv.cc.cc}/lib/gcc/${stdenv.targetPlatform.config}/${stdenv.cc.version}" >> $out/nix-support/cc-ldflags
|
||||
# echo "-L${stdenv.cc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
||||
# echo "-L${unwrapped}/lib -L${gcc-combined}/lib --verbose" >> $out/nix-support/cc-ldflags
|
||||
# echo "-isystem ${nvhpc}/include" >> $out/nix-support/cc-cflags
|
||||
# echo "-L${stdenv.cc.cc}/lib/gcc/${stdenv.targetPlatform.config}/${stdenv.cc.version}" >>
|
||||
# $out/nix-support/cc-ldflags
|
||||
echo "-L${gcc.cc.lib}/lib" >> $out/nix-support/cc-ldflags
|
||||
# echo "-L${nvhpc}/lib -L${gcc-combined}/lib --verbose" >> $out/nix-support/cc-ldflags
|
||||
|
||||
echo "-tp=${config.nvhpcArch}" >> $out/nix-support/cc-cflags-before
|
||||
echo "-gpu=${cudaCapability} -#" >> $out/nix-support/cc-cflags-before
|
||||
echo "-gpu=${cudaCapability}" >> $out/nix-support/cc-cflags-before
|
||||
|
||||
# Need the gcc in the path
|
||||
# echo 'export "PATH=${gcc-combined}/bin:$PATH"' >> $out/nix-support/cc-wrapper-hook
|
||||
@@ -73,5 +79,6 @@ let
|
||||
export named_cc=nvc
|
||||
export named_cxx=nvc++
|
||||
export named_fc=nvfortran''; });
|
||||
in addAttrsToDerivation { NVLOCALRC = customLocalrc; } (overrideCC stdenv nvhpc)
|
||||
in addAttrsToDerivation { NVLOCALRC = customLocalrc; } (overrideCC stdenv wrapper)
|
||||
# NIX_DEBUG = "7";
|
||||
# in nvhpc
|
||||
|
||||
Reference in New Issue
Block a user