CUDA: Difference between revisions

DoggoBit (talk | contribs)
Bachp (talk | contribs)
Document selection of nvidia driver
Line 17: Line 17:
* By making a FHS user env
* By making a FHS user env


{{file|cuda-fhs.nix|nix|<nowiki>
{{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
     linuxPackages.nvidia_x11
     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=${pkgs.linuxPackages.nvidia_x11}/lib
     # export LD_LIBRARY_PATH=${nvidiaPackage}/lib
     export EXTRA_LDFLAGS="-L/lib -L${pkgs.linuxPackages.nvidia_x11}/lib"
     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}}
</nowiki>}}




* By making a nix-shell
* By making a nix-shell
{{file|cuda-shell.nix|nix|<nowiki>
{{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 linuxPackages.nvidia_x11
     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=${pkgs.linuxPackages.nvidia_x11}/lib:${pkgs.ncurses5}/lib
       # export LD_LIBRARY_PATH=${nvidiaPackage}/lib:${pkgs.ncurses}/lib
       export EXTRA_LDFLAGS="-L/lib -L${pkgs.linuxPackages.nvidia_x11}/lib"
       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}}
</nowiki>}}


* 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
         linuxPackages.nvidia_x11
         nvidiaPackage
         cudaPackages.cudnn
         cudaPackages.cudnn
         libGLU
         libGLU
Line 115: Line 119:
         xorg.libXrandr
         xorg.libXrandr
         zlib
         zlib
         ncurses5
         ncurses
         stdenv.cc
         stdenv.cc
         binutils
         binutils
Line 122: Line 126:


       shellHook = ''
       shellHook = ''
         export LD_LIBRARY_PATH="${pkgs.linuxPackages.nvidia_x11}/lib:$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${pkgs.linuxPackages.nvidia_x11}/lib"
         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 ==