CUDA: Difference between revisions
Document selection of nvidia driver |
|||
Line 17: | Line 17: | ||
* By making a FHS user env | * By making a FHS user env | ||
{{file| | {{file|||3=# 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 38: | ||
unzip | unzip | ||
cudatoolkit | cudatoolkit | ||
nvidiaPackage | |||
libGLU libGL | libGLU libGL | ||
xorg.libXi xorg.libXmu freeglut | xorg.libXi xorg.libXmu freeglut | ||
Line 47: | Line 50: | ||
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|name=cuda-fhs.nix|lang=nix}} | ||
* By making a nix-shell | * By making a nix-shell | ||
{{file| | {{file|||3=# Run with `nix-shell cuda-shell.nix` | ||
# 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 68: | ||
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 76: | ||
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" | ||
''; | ''; | ||
} | }|name=cuda-shell.nix|lang=nix}} | ||
* By making a flake.nix<syntaxhighlight lang="nix" line="1" start="1"> | * By making a flake.nix<syntaxhighlight lang="nix" line="1" start="1"># flake.nix, run with `nix develop` | ||
# flake.nix, run with `nix develop` | |||
{ | { | ||
description = "CUDA development environment"; | description = "CUDA development environment"; | ||
Line 94: | Line 96: | ||
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 107: | ||
cudaPackages.cuda_cudart | cudaPackages.cuda_cudart | ||
cudatoolkit | cudatoolkit | ||
nvidiaPackage | |||
cudaPackages.cudnn | cudaPackages.cudnn | ||
libGLU | libGLU | ||
Line 115: | Line 119: | ||
xorg.libXrandr | xorg.libXrandr | ||
zlib | zlib | ||
ncurses | |||
stdenv.cc | stdenv.cc | ||
binutils | binutils | ||
Line 122: | Line 126: | ||
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 135: | ||
}; | }; | ||
}; | }; | ||
} | }</syntaxhighlight> | ||
</syntaxhighlight> | |||
== Setting up CUDA Binary Cache == | == Setting up CUDA Binary Cache == |