From 229ee7cad9af24e55be007710edb475edf9ec5bb Mon Sep 17 00:00:00 2001 From: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com> Date: Fri, 13 Jan 2023 12:41:57 -0600 Subject: Paraview rocm (#34790) * paraview: add `rocm` variant This conflicts with CUDA and requires at least ParaView 5.11.0. More dependencies are also needed. * E4S: Add ParaView for ROCm and CUDA stacks * DAV SDK: Update ParaView version and GPU variants * Verify using hipcc vs amdclang++ for newer hip Co-authored-by: Ben Boeckel --- .../builtin/packages/ecp-data-vis-sdk/package.py | 18 +++++------------- .../repos/builtin/packages/paraview/package.py | 21 ++++++++++++++++++++- 2 files changed, 25 insertions(+), 14 deletions(-) (limited to 'var') diff --git a/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py b/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py index 46cf3536ff..5cf1b51663 100644 --- a/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py +++ b/var/spack/repos/builtin/packages/ecp-data-vis-sdk/package.py @@ -155,22 +155,14 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage): depends_on("py-cinemasci", when="+cinema") + # ParaView needs @5.11: in order to use CUDA/ROCM, therefore it is the minimum + # required version since GPU capability is desired for ECP dav_sdk_depends_on( - "paraview@5.10:+mpi+openpmd+python+kits+shared+catalyst+libcatalyst", + "paraview@5.11:+mpi+openpmd+python+kits+shared+catalyst+libcatalyst", when="+paraview", - propagate=["hdf5", "adios2"], + propagate=["adios2", "cuda", "hdf5", "rocm"] + amdgpu_target_variants + cuda_arch_variants, ) - dav_sdk_depends_on("libcatalyst+mpi", when="+paraview") - - # ParaView needs @5.11: in order to use cuda and be compatible with other - # SDK packages. - depends_on("paraview +cuda", when="+paraview +cuda ^paraview@5.11:") - for cuda_arch in cuda_arch_variants: - depends_on( - "paraview {0}".format(cuda_arch), - when="+paraview {0} ^paraview@5.11:".format(cuda_arch), - ) - depends_on("paraview ~cuda", when="+paraview ~cuda") + dav_sdk_depends_on("libcatalyst@2:+mpi", when="+paraview") conflicts("paraview@master", when="+paraview") dav_sdk_depends_on("visit+mpi+python+silo", when="+visit", propagate=["hdf5", "adios2"]) diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 6a6768d706..4c517d4c46 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -9,7 +9,7 @@ import os from spack.package import * -class Paraview(CMakePackage, CudaPackage): +class Paraview(CMakePackage, CudaPackage, ROCmPackage): """ParaView is an open-source, multi-platform data analysis and visualization application. This package includes the Catalyst in-situ library for versions 5.7 and greater, otherwise use the @@ -113,6 +113,9 @@ class Paraview(CMakePackage, CudaPackage): conflicts("+openpmd", when="~adios2 ~hdf5", msg="openPMD needs ADIOS2 and/or HDF5") conflicts("~shared", when="+cuda") conflicts("+cuda", when="@5.8:5.10") + conflicts("+rocm", when="+cuda") + conflicts("+rocm", when="use_vtkm=off") + conflicts("paraview@:5.10", when="+rocm") # Legacy rendering dropped in 5.5 # See commit: https://gitlab.kitware.com/paraview/paraview/-/commit/798d328c conflicts("~opengl2", when="@5.5:") @@ -143,6 +146,7 @@ class Paraview(CMakePackage, CudaPackage): conflicts("cuda_arch=%d" % _arch, when="+cuda", msg="ParaView requires cuda_arch >= 20") depends_on("cmake@3.3:", type="build") + depends_on("cmake@3.21:", type="build", when="+rocm") depends_on("ninja", type="build") @@ -209,6 +213,12 @@ class Paraview(CMakePackage, CudaPackage): depends_on("xz") depends_on("zlib") depends_on("libcatalyst@2:", when="+libcatalyst") + depends_on("hip@5.2:", when="+rocm") + for target in ROCmPackage.amdgpu_targets: + depends_on( + "kokkos +rocm amdgpu_target={0}".format(target), + when="+rocm amdgpu_target={0}".format(target), + ) # Older builds of pugi export their symbols differently, # and pre-5.9 is unable to handle that. @@ -587,6 +597,15 @@ class Paraview(CMakePackage, CudaPackage): if "+advanced_debug" in spec: cmake_args.append("-DVTK_DEBUG_LEAKS:BOOL=ON") + if spec.satisfies("@5.11:"): + cmake_args.append("-DPARAVIEW_USE_HIP:BOOL=%s" % variant_bool("+rocm")) + if "+rocm" in spec: + archs = spec.variants["amdgpu_target"].value + if archs != "none": + arch_str = ",".join(archs) + cmake_args.append("-DCMAKE_HIP_ARCHITECTURES=%s" % arch_str) + cmake_args.append("-DKokkos_CXX_COMPILER=%s" % spec["hip"].hipcc) + if "+catalyst" in spec: cmake_args.append("-DVTK_MODULE_ENABLE_ParaView_Catalyst=YES") if "+python" in spec: -- cgit v1.2.3-70-g09d2