From 5cdc4888b4ea4492313dbf5c750b85d88faa6598 Mon Sep 17 00:00:00 2001 From: Jonas Date: Fri, 30 Aug 2024 13:34:14 +0200 Subject: [PATCH 1/3] sirius: Add option to build python bindings --- pkgs/by-name/si/sirius/package.nix | 44 ++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/pkgs/by-name/si/sirius/package.nix b/pkgs/by-name/si/sirius/package.nix index a962da0c865a..8ba0813e54f1 100644 --- a/pkgs/by-name/si/sirius/package.nix +++ b/pkgs/by-name/si/sirius/package.nix @@ -21,6 +21,8 @@ , boost , eigen , libvdwxc +, enablePython ? false +, pythonPackages ? null , llvmPackages , cudaPackages , rocmPackages @@ -35,6 +37,7 @@ }: assert builtins.elem gpuBackend [ "none" "cuda" "rocm" ]; +assert enablePython -> pythonPackages != null; stdenv.mkDerivation rec { pname = "SIRIUS"; @@ -81,10 +84,23 @@ stdenv.mkDerivation rec { ] ++ lib.optionals (gpuBackend == "rocm") [ rocmPackages.clr rocmPackages.rocblas - ] ++ lib.optional stdenv.isDarwin llvmPackages.openmp - ; + ] ++ lib.optionals stdenv.isDarwin [ + llvmPackages.openmp + ] ++ lib.optionals enablePython (with pythonPackages; [ + python + pybind11 + ]); - propagatedBuildInputs = [ (lib.getBin mpi) ]; + propagatedBuildInputs = [ + (lib.getBin mpi) + ] ++ lib.optionals enablePython (with pythonPackages; [ + mpi4py + voluptuous + numpy + h5py + scipy + pyyaml + ]); CXXFLAGS = [ # GCC 13: error: 'uintptr_t' in namespace 'std' does not name a type @@ -92,20 +108,20 @@ stdenv.mkDerivation rec { ]; cmakeFlags = [ - "-DUSE_SCALAPACK=ON" + "-DSIRIUS_USE_SCALAPACK=ON" + "-DSIRIUS_USE_VDWXC=ON" + "-DSIRIUS_CREATE_FORTRAN_BINDINGS=ON" + "-DSIRIUS_USE_OPENMP=ON" "-DBUILD_TESTING=ON" - "-DUSE_VDWXC=ON" - "-DCREATE_FORTRAN_BINDINGS=ON" - "-DUSE_OPENMP=ON" - "-DBUILD_TESTING=ON" - ] - ++ lib.optionals (gpuBackend == "cuda") [ - "-DUSE_CUDA=ON" + ] ++ lib.optionals (gpuBackend == "cuda") [ + "-DSIRIUS_USE_CUDA=ON" "-DCUDA_TOOLKIT_ROOT_DIR=${cudaPackages.cudatoolkit}" - ] - ++ lib.optionals (gpuBackend == "rocm") [ - "-DUSE_ROCM=ON" + (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cudaPackages.flags.cmakeCudaArchitecturesString) + ] ++ lib.optionals (gpuBackend == "rocm") [ + "-DSIRIUS_USE_ROCM=ON" "-DHIP_ROOT_DIR=${rocmPackages.clr}" + ] ++ lib.optionals enablePython [ + "-DSIRIUS_CREATE_PYTHON_MODULE=ON" ]; doCheck = true; From c2f9a2c471a7c372597b4e0b93740b56d2f849e3 Mon Sep 17 00:00:00 2001 From: Jonas Date: Fri, 30 Aug 2024 13:35:23 +0200 Subject: [PATCH 2/3] python3Packages.sirius: init at 7.6.0 --- pkgs/top-level/python-packages.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index adf16544281c..5b289889f965 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -14532,6 +14532,11 @@ self: super: with self; { sipyco = callPackage ../development/python-modules/sipyco { }; + sirius = toPythonModule (pkgs.sirius.override { + enablePython = true; + pythonPackages = self; + }); + sismic = callPackage ../development/python-modules/sismic { }; sisyphus-control = callPackage ../development/python-modules/sisyphus-control { }; From 585af9ec70b6048639bfc492163875aed3c11e55 Mon Sep 17 00:00:00 2001 From: Jonas Date: Fri, 30 Aug 2024 13:37:35 +0200 Subject: [PATCH 3/3] umpire: Add cuda support --- pkgs/by-name/um/umpire/package.nix | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/um/umpire/package.nix b/pkgs/by-name/um/umpire/package.nix index 17fae99e313f..54340d3fdeca 100644 --- a/pkgs/by-name/um/umpire/package.nix +++ b/pkgs/by-name/um/umpire/package.nix @@ -2,8 +2,13 @@ , lib , fetchFromGitHub , cmake +, config +, cudaSupport ? config.cudaSupport +, cudaPackages ? null }: +assert cudaSupport -> cudaPackages != null; + stdenv.mkDerivation rec { pname = "umpire"; version = "2024.07.0"; @@ -16,7 +21,22 @@ stdenv.mkDerivation rec { fetchSubmodules = true; }; - nativeBuildInputs = [ cmake ]; + nativeBuildInputs = [ + cmake + ] ++ lib.optionals cudaSupport [ + cudaPackages.cuda_nvcc + ]; + + buildInputs = lib.optionals cudaSupport (with cudaPackages; [ + cudatoolkit + cuda_cudart + ]); + + cmakeFlags = lib.optionals cudaSupport [ + "-DCUDA_TOOLKIT_ROOT_DIR=${cudaPackages.cudatoolkit}" + "-DENABLE_CUDA=ON" + (lib.cmakeFeature "CMAKE_CUDA_ARCHITECTURES" cudaPackages.flags.cmakeCudaArchitecturesString) + ]; meta = with lib; { description = "Application-focused API for memory management on NUMA & GPU architectures";