CUDA: Difference between revisions
mNo edit summary |
|||
| (One intermediate revision by the same user not shown) | |||
| Line 17: | Line 17: | ||
* By making a FHS user env | * By making a FHS user env | ||
<syntaxhighlight lang="nix" line="1" start="1"># flake.nix, run with `nix develop` | |||
# Run with `nix-shell cuda-fhs.nix` | # Run with `nix-shell cuda-fhs.nix` | ||
{ pkgs ? import </nowiki><nixpkgs><nowiki> {} }: | { pkgs ? import </nowiki><nixpkgs><nowiki> {} }: | ||
let | |||
# Change according to the driver used: stable, beta | |||
nvidiaPackage = pkgs.linuxPackages.nvidiaPackages.stable; | |||
in | |||
(pkgs.buildFHSEnv { | (pkgs.buildFHSEnv { | ||
name = "cuda-env"; | name = "cuda-env"; | ||
| Line 35: | Line 39: | ||
unzip | unzip | ||
cudatoolkit | cudatoolkit | ||
nvidiaPackage | |||
libGLU libGL | libGLU libGL | ||
xorg.libXi xorg.libXmu freeglut | xorg.libXi xorg.libXmu freeglut | ||
| Line 47: | Line 51: | ||
profile = '' | profile = '' | ||
export CUDA_PATH=${pkgs.cudatoolkit} | export CUDA_PATH=${pkgs.cudatoolkit} | ||
# export LD_LIBRARY_PATH=${ | # export LD_LIBRARY_PATH=${nvidiaPackage}/lib | ||
export EXTRA_LDFLAGS="-L/lib -L${ | export EXTRA_LDFLAGS="-L/lib -L${nvidiaPackage}/lib" | ||
export EXTRA_CCFLAGS="-I/usr/include" | export EXTRA_CCFLAGS="-I/usr/include" | ||
''; | ''; | ||
}).env | }).env | ||
</ | </syntaxhighlight> | ||
* By making a nix-shell | * By making a nix-shell | ||
<syntaxhighlight lang="nix" line="1" start="1"> | |||
# Run with `nix-shell cuda-shell.nix` | # flake.nix, run with `nix develop`# Run with `nix-shell cuda-shell.nix` | ||
{ pkgs ? import </nowiki><nixpkgs><nowiki> {} }: | { pkgs ? import </nowiki><nixpkgs><nowiki> {} }: | ||
let | |||
nvidiaPackage = pkgs.linuxPackages.nvidiaPackages.stable; | |||
in | |||
pkgs.mkShell { | pkgs.mkShell { | ||
name = "cuda-env-shell"; | name = "cuda-env-shell"; | ||
| Line 64: | Line 71: | ||
git gitRepo gnupg autoconf curl | git gitRepo gnupg autoconf curl | ||
procps gnumake util-linux m4 gperf unzip | procps gnumake util-linux m4 gperf unzip | ||
cudatoolkit | cudatoolkit nvidiaPackage | ||
libGLU libGL | libGLU libGL | ||
xorg.libXi xorg.libXmu freeglut | xorg.libXi xorg.libXmu freeglut | ||
| Line 72: | Line 79: | ||
shellHook = '' | shellHook = '' | ||
export CUDA_PATH=${pkgs.cudatoolkit} | export CUDA_PATH=${pkgs.cudatoolkit} | ||
# export LD_LIBRARY_PATH=${ | # export LD_LIBRARY_PATH=${nvidiaPackage}/lib:${pkgs.ncurses}/lib | ||
export EXTRA_LDFLAGS="-L/lib -L${ | export EXTRA_LDFLAGS="-L/lib -L${nvidiaPackage}/lib" | ||
export EXTRA_CCFLAGS="-I/usr/include" | export EXTRA_CCFLAGS="-I/usr/include" | ||
''; | ''; | ||
} | } | ||
</ | </syntaxhighlight> | ||
* By making a flake.nix<syntaxhighlight lang="nix" line="1" start="1"> | * By making a flake.nix | ||
# flake.nix, run with `nix develop` | <syntaxhighlight lang="nix" line="1" start="1"># flake.nix, run with `nix develop` | ||
{ | { | ||
description = "CUDA development environment"; | description = "CUDA development environment"; | ||
| Line 94: | Line 101: | ||
config.cudaVersion = "12"; | config.cudaVersion = "12"; | ||
}; | }; | ||
# Change according to the driver used: stable, beta | |||
nvidiaPackage = pkgs.linuxPackages.nvidiaPackages.stable; | |||
in { | in { | ||
# alejandra is a nix formatter with a beautiful output | # alejandra is a nix formatter with a beautiful output | ||
| Line 103: | Line 112: | ||
cudaPackages.cuda_cudart | cudaPackages.cuda_cudart | ||
cudatoolkit | cudatoolkit | ||
nvidiaPackage | |||
cudaPackages.cudnn | cudaPackages.cudnn | ||
libGLU | libGLU | ||
| Line 115: | Line 124: | ||
xorg.libXrandr | xorg.libXrandr | ||
zlib | zlib | ||
ncurses | |||
stdenv.cc | stdenv.cc | ||
binutils | binutils | ||
| Line 122: | Line 131: | ||
shellHook = '' | shellHook = '' | ||
export LD_LIBRARY_PATH="${ | export LD_LIBRARY_PATH="${nvidiaPackage}/lib:$LD_LIBRARY_PATH" | ||
export CUDA_PATH=${pkgs.cudatoolkit} | export CUDA_PATH=${pkgs.cudatoolkit} | ||
export EXTRA_LDFLAGS="-L/lib -L${ | export EXTRA_LDFLAGS="-L/lib -L${nvidiaPackage}/lib" | ||
export EXTRA_CCFLAGS="-I/usr/include" | export EXTRA_CCFLAGS="-I/usr/include" | ||
export CMAKE_PREFIX_PATH="${pkgs.fmt.dev}:$CMAKE_PREFIX_PATH" | export CMAKE_PREFIX_PATH="${pkgs.fmt.dev}:$CMAKE_PREFIX_PATH" | ||
| Line 131: | Line 140: | ||
}; | }; | ||
}; | }; | ||
} | }</syntaxhighlight> | ||
</syntaxhighlight> | |||
== Setting up CUDA Binary Cache == | == Setting up CUDA Binary Cache == | ||