Sensei v4 (#30432)
* Sensei: Refactor package to work with v4.0.0 * Add missing MPI dependency * Patch bug in libsim adapter * Simplify conflicts with when-clauses * Conflict variants that are incompatible (catalyst/libsim/ascent) * Fix paraview version constraints to be more clear * Add version constraints for VTK * Drop unneeded visit restrictions * Specify +vtkm dependency on ParaView's VTKm * +hl is not needed for VTK, and is already specified in the VTK recipe when it is needed * Pass paths for adios2 and ascent packages * ECP-SDK: Enable sensei * CI: Add sensei to the data-vis-sdk pipeline * Sensei: Change VISIT_DIR to work on linux * Fixup: style check * Sensei: Add patch for version detection * CI: revert SDK pipeline in favor of new matrices * Sensei: Formatting fixes
This commit is contained in:
parent
364e4e03ef
commit
d77a8f7aa1
@ -81,15 +81,12 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage):
|
|||||||
variant("ascent", default=False, description="Enable Ascent")
|
variant("ascent", default=False, description="Enable Ascent")
|
||||||
variant("cinema", default=False, description="Enable Cinema")
|
variant("cinema", default=False, description="Enable Cinema")
|
||||||
variant("paraview", default=False, description="Enable ParaView")
|
variant("paraview", default=False, description="Enable ParaView")
|
||||||
|
variant("sensei", default=False, description="Enable Sensei")
|
||||||
variant("sz", default=False, description="Enable SZ")
|
variant("sz", default=False, description="Enable SZ")
|
||||||
variant("visit", default=False, description="Enable VisIt")
|
variant("visit", default=False, description="Enable VisIt")
|
||||||
variant("vtkm", default=False, description="Enable VTK-m")
|
variant("vtkm", default=False, description="Enable VTK-m")
|
||||||
variant("zfp", default=False, description="Enable ZFP")
|
variant("zfp", default=False, description="Enable ZFP")
|
||||||
|
|
||||||
# Outstanding build issues
|
|
||||||
variant("sensei", default=False, description="Enable Sensei")
|
|
||||||
conflicts("+sensei")
|
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# Dependencies
|
# Dependencies
|
||||||
############################################################
|
############################################################
|
||||||
@ -115,13 +112,10 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage):
|
|||||||
|
|
||||||
dav_sdk_depends_on("veloc", when="+veloc")
|
dav_sdk_depends_on("veloc", when="+veloc")
|
||||||
|
|
||||||
# Currenly only develop has necessary patches. Update this after SC21 release
|
propagate_to_sensei = [(v, v) for v in ["adios2", "ascent", "hdf5"]]
|
||||||
propagate_to_sensei = [(v, v) for v in ["adios2", "ascent", "hdf5", "vtkm"]]
|
|
||||||
propagate_to_sensei.extend([("paraview", "catalyst"), ("visit", "libsim")])
|
propagate_to_sensei.extend([("paraview", "catalyst"), ("visit", "libsim")])
|
||||||
dav_sdk_depends_on(
|
dav_sdk_depends_on(
|
||||||
"sensei@develop +vtkio +python ~miniapps",
|
"sensei@4: ~vtkio +python", when="+sensei", propagate=dict(propagate_to_sensei)
|
||||||
when="+sensei",
|
|
||||||
propagate=dict(propagate_to_sensei),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Fortran support with ascent is problematic on some Cray platforms so the
|
# Fortran support with ascent is problematic on some Cray platforms so the
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
From 431e4b59e50bef4609b5aa5b47719302c41f4fd8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chuck Atkins <chuck.atkins@kitware.com>
|
||||||
|
Date: Wed, 18 May 2022 13:02:38 -0400
|
||||||
|
Subject: [PATCH] libsim: Add missing symbol visibility for
|
||||||
|
LibsimImageProperties
|
||||||
|
|
||||||
|
---
|
||||||
|
sensei/LibsimImageProperties.h | 4 +++-
|
||||||
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sensei/LibsimImageProperties.h b/sensei/LibsimImageProperties.h
|
||||||
|
index 6a63580..c317fd7 100644
|
||||||
|
--- a/sensei/LibsimImageProperties.h
|
||||||
|
+++ b/sensei/LibsimImageProperties.h
|
||||||
|
@@ -1,12 +1,14 @@
|
||||||
|
#ifndef sensei_LibsimImageProperties_h
|
||||||
|
#define sensei_LibsimImageProperties_h
|
||||||
|
|
||||||
|
+#include "senseiConfig.h"
|
||||||
|
+
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace sensei
|
||||||
|
{
|
||||||
|
|
||||||
|
-class LibsimImageProperties
|
||||||
|
+class SENSEI_EXPORT LibsimImageProperties
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LibsimImageProperties();
|
||||||
|
--
|
||||||
|
2.36.1
|
||||||
|
|
@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
class Sensei(CMakePackage):
|
class Sensei(CMakePackage):
|
||||||
"""SENSEI is a platform for scalable in-situ analysis and visualization.
|
"""SENSEI is a platform for scalable in-situ analysis and visualization.
|
||||||
Its design motto is 'Write once, run everywhere', this means that once
|
Its design motto is "Write once, run everywhere", this means that once
|
||||||
the application is instrumented with SENSEI it can use existing and
|
the application is instrumented with SENSEI it can use existing and
|
||||||
future analysis backends. Existing backends include: Paraview/Catalyst,
|
future analysis backends. Existing backends include: Paraview/Catalyst,
|
||||||
Visit/Libsim, ADIOS, Python scripts, and so on."""
|
Visit/Libsim, ADIOS, Python scripts, and so on."""
|
||||||
@ -19,6 +19,7 @@ class Sensei(CMakePackage):
|
|||||||
maintainers = ["sshudler", "kwryankrattiger"]
|
maintainers = ["sshudler", "kwryankrattiger"]
|
||||||
|
|
||||||
version("develop", branch="develop")
|
version("develop", branch="develop")
|
||||||
|
version("4.0.0", sha256="fc1538aa1051789dbdefbe18b7f251bc46e7a6ae1db3a940c123552e0318db8b")
|
||||||
version("3.2.2", sha256="d554b654880e899d97d572f02de87b0202faadaf899420ef871093b5bce320c0")
|
version("3.2.2", sha256="d554b654880e899d97d572f02de87b0202faadaf899420ef871093b5bce320c0")
|
||||||
version("3.2.1", sha256="7438fb4b148e4d1eb888c619366d0d8639122ecbbf1767e19549d6ca0c8698ca")
|
version("3.2.1", sha256="7438fb4b148e4d1eb888c619366d0d8639122ecbbf1767e19549d6ca0c8698ca")
|
||||||
version("3.2.0", sha256="fd1a69134d9f8151d85a7f84a67d6a648aef5580585b39f74a56367cff433c82")
|
version("3.2.0", sha256="fd1a69134d9f8151d85a7f84a67d6a648aef5580585b39f74a56367cff433c82")
|
||||||
@ -36,8 +37,13 @@ class Sensei(CMakePackage):
|
|||||||
variant("libsim", default=False, description="Build with VisIt-Libsim support")
|
variant("libsim", default=False, description="Build with VisIt-Libsim support")
|
||||||
variant("vtkio", default=False, description="Enable adaptors to write to VTK XML format")
|
variant("vtkio", default=False, description="Enable adaptors to write to VTK XML format")
|
||||||
variant("adios2", default=False, description="Enable ADIOS2 adaptors and endpoints")
|
variant("adios2", default=False, description="Enable ADIOS2 adaptors and endpoints")
|
||||||
variant("hdf5", default=False, description="Enables HDF5 adaptors and endpoints")
|
variant("hdf5", default=False, description="Enables HDF5 adaptors and endpoints", when="@3:")
|
||||||
variant("vtkm", default=False, description="Enable VTKm adaptors and endpoints")
|
variant(
|
||||||
|
"vtkm",
|
||||||
|
default=False,
|
||||||
|
description="Enable VTKm adaptors and endpoints",
|
||||||
|
when="@4: +catalyst",
|
||||||
|
)
|
||||||
variant("python", default=False, description="Enable Python bindings")
|
variant("python", default=False, description="Enable Python bindings")
|
||||||
variant(
|
variant(
|
||||||
"miniapps", default=False, description="Enable the parallel 3D and oscillators miniapps"
|
"miniapps", default=False, description="Enable the parallel 3D and oscillators miniapps"
|
||||||
@ -46,21 +52,36 @@ class Sensei(CMakePackage):
|
|||||||
# All SENSEI versions up to 2.1.1 support only Python 2, so in this case
|
# All SENSEI versions up to 2.1.1 support only Python 2, so in this case
|
||||||
# Paraview 6 cannot be used since it requires Python 3. Starting from
|
# Paraview 6 cannot be used since it requires Python 3. Starting from
|
||||||
# version 3, SENSEI supports Python 3.
|
# version 3, SENSEI supports Python 3.
|
||||||
depends_on("paraview@5.5.0:5.5.2+mpi+hdf5", when="@:2.1.1 +catalyst")
|
depends_on("paraview+mpi", when="+catalyst")
|
||||||
depends_on("paraview@5.5.0:5.5.2+python+mpi+hdf5", when="@:2.1.1 +catalyst+python")
|
depends_on("paraview+hdf5", when="+catalyst+hdf5")
|
||||||
depends_on("paraview@5.6:5.7+mpi+hdf5", when="@3:3.2.1 +catalyst")
|
depends_on("paraview+python", when="@:2 +catalyst+python")
|
||||||
depends_on("paraview@5.6:5.7+python3+mpi+hdf5", when="@3:3.2.1 +catalyst+python")
|
depends_on("paraview+python3", when="@3: +catalyst+python")
|
||||||
depends_on("paraview+mpi+hdf5", when="+catalyst")
|
|
||||||
depends_on("paraview+python3+mpi+hdf5", when="+catalyst+python")
|
depends_on("paraview@5.5.0:5.5.2", when="@:2.1.1 +catalyst")
|
||||||
depends_on("visit~gui~python", when="+libsim")
|
depends_on("paraview@5.6:5.7", when="@3:3.2.1 +catalyst")
|
||||||
depends_on("vtk@8.1.0:8.1.2", when="+libsim")
|
depends_on("paraview@5.7:5.9", when="@3.2.2 +catalyst")
|
||||||
depends_on("vtk", when="~libsim ~catalyst")
|
depends_on("paraview@5.7:5.10", when="@4: +catalyst")
|
||||||
depends_on("vtk+python", when="~libsim ~catalyst+python")
|
|
||||||
|
# Visit Dep
|
||||||
|
depends_on("visit", when="+libsim")
|
||||||
|
|
||||||
|
# VTK Dep
|
||||||
|
depends_on("vtk@8:8", when="@:3 ~catalyst")
|
||||||
|
depends_on("vtk+python", when="@:3 ~catalyst+python")
|
||||||
|
depends_on("vtk@9:", when="@4: +vtkio ~catalyst")
|
||||||
|
|
||||||
|
# VTK-m
|
||||||
|
depends_on("paraview use_vtkm=on", when="+vtkm")
|
||||||
|
|
||||||
|
# ADIOS2
|
||||||
depends_on("adios2", when="+adios2")
|
depends_on("adios2", when="+adios2")
|
||||||
|
|
||||||
|
# Ascent
|
||||||
depends_on("ascent", when="+ascent")
|
depends_on("ascent", when="+ascent")
|
||||||
|
|
||||||
# VTK needs +hl and currently spack cannot resolve +hl and ~hl
|
# HDF5
|
||||||
depends_on("hdf5+hl", when="+hdf5")
|
depends_on("hdf5", when="+hdf5")
|
||||||
|
|
||||||
# SENSEI 3 supports Python 3, earlier versions upport only Python 2
|
# SENSEI 3 supports Python 3, earlier versions upport only Python 2
|
||||||
depends_on("python@:2.7.16", when="@:2.1.1 +python", type=("build", "run"))
|
depends_on("python@:2.7.16", when="@:2.1.1 +python", type=("build", "run"))
|
||||||
depends_on("python@3:", when="@3: +python", type=("build", "run"))
|
depends_on("python@3:", when="@3: +python", type=("build", "run"))
|
||||||
@ -70,15 +91,18 @@ class Sensei(CMakePackage):
|
|||||||
depends_on("swig", when="+python", type="build")
|
depends_on("swig", when="+python", type="build")
|
||||||
depends_on("cmake@3.6:", when="@3:", type="build")
|
depends_on("cmake@3.6:", when="@3:", type="build")
|
||||||
depends_on("pugixml")
|
depends_on("pugixml")
|
||||||
|
depends_on("mpi")
|
||||||
|
|
||||||
# Since sensei always has a VTK dependency, either directly or indirectly,
|
# Can have either LibSim or Catalyst or Ascent, but not a combination
|
||||||
# VTKm will also always be available via VTK so there's no scenario to
|
|
||||||
# have a directl dependency on VTK,
|
|
||||||
|
|
||||||
# Can have either LibSim or Catalyst, but not both
|
|
||||||
conflicts("+libsim", when="+catalyst")
|
conflicts("+libsim", when="+catalyst")
|
||||||
# hdf5 variant is available only for SENSEI 3
|
conflicts("+ascent", when="+catalyst")
|
||||||
conflicts("+hdf5", when="@:2.1.1")
|
conflicts("+ascent", when="+libsim")
|
||||||
|
|
||||||
|
# Patches
|
||||||
|
patch("libsim-add-missing-symbol-visibility-pr67.patch", when="@4.0.0")
|
||||||
|
patch("sensei-find-mpi-component-cxx-pr68.patch", when="@4.0.0")
|
||||||
|
patch("sensei-install-external-pugixml-pr69.patch", when="@4.0.0")
|
||||||
|
patch("sensei-version-detection-pr75.patch", when="@4.0.0")
|
||||||
|
|
||||||
def cmake_args(self):
|
def cmake_args(self):
|
||||||
spec = self.spec
|
spec = self.spec
|
||||||
@ -88,6 +112,11 @@ def cmake_args(self):
|
|||||||
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||||
self.define("SENSEI_USE_EXTERNAL_pugixml", True),
|
self.define("SENSEI_USE_EXTERNAL_pugixml", True),
|
||||||
self.define("ENABLE_SENSEI", True),
|
self.define("ENABLE_SENSEI", True),
|
||||||
|
self.define("MPI_C_COMPILER", spec["mpi"].mpicc),
|
||||||
|
self.define("MPI_CXX_COMPILER", spec["mpi"].mpicxx),
|
||||||
|
# Don"t rely on MPI found in cray environment for cray systems.
|
||||||
|
# On non-cray systems this should be a no-op
|
||||||
|
self.define("ENABLE_CRAY_MPICH", False),
|
||||||
self.define_from_variant("ENABLE_ASCENT", "ascent"),
|
self.define_from_variant("ENABLE_ASCENT", "ascent"),
|
||||||
self.define_from_variant("ENABLE_VTKM", "vtkm"),
|
self.define_from_variant("ENABLE_VTKM", "vtkm"),
|
||||||
self.define_from_variant("ENABLE_CATALYST", "catalyst"),
|
self.define_from_variant("ENABLE_CATALYST", "catalyst"),
|
||||||
@ -100,12 +129,16 @@ def cmake_args(self):
|
|||||||
self.define_from_variant("ENABLE_OSCILLATORS", "miniapps"),
|
self.define_from_variant("ENABLE_OSCILLATORS", "miniapps"),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
if "+adios2" in spec:
|
||||||
|
args.append(self.define("ADIOS2_DIR", spec["adios2"].prefix))
|
||||||
|
|
||||||
|
if "+ascent" in spec:
|
||||||
|
args.append(self.define("ASCENT_DIR", spec["ascent"].prefix))
|
||||||
|
|
||||||
if "+libsim" in spec:
|
if "+libsim" in spec:
|
||||||
args.append(
|
# This is only for linux
|
||||||
"-DVISIT_DIR:PATH={0}/current/{1}-{2}".format(
|
# Visit install location may be different on other platforms
|
||||||
spec["visit"].prefix, spec.platform, spec.target.family
|
args.append("-DVISIT_DIR:PATH={0}/current/linux-x86_64".format(spec["visit"].prefix))
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
if "+python" in spec:
|
if "+python" in spec:
|
||||||
args.append(self.define("PYTHON_EXECUTABLE", spec["python"].command.path))
|
args.append(self.define("PYTHON_EXECUTABLE", spec["python"].command.path))
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/CMake/mpi.cmake b/CMake/mpi.cmake
|
||||||
|
index 853a355e..0f40d7b4 100644
|
||||||
|
--- a/CMake/mpi.cmake
|
||||||
|
+++ b/CMake/mpi.cmake
|
||||||
|
@@ -16,7 +16,7 @@ elseif (ENABLE_CORI_GPU OR (NOT DEFINED ENABLE_CORI_GPU AND NOT ("$ENV{OPENMPI_D
|
||||||
|
set(MPIEXEC srun CACHE STRING "Platform MPI run equivalent")
|
||||||
|
set(MPI_C_FOUND CACHE BOOL ON "status of MPI config")
|
||||||
|
else()
|
||||||
|
- find_package(MPI COMPONENTS C)
|
||||||
|
+ find_package(MPI COMPONENTS C CXX)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (NOT MPI_C_FOUND)
|
@ -0,0 +1,13 @@
|
|||||||
|
diff --git a/utils/pugixml/CMakeLists.txt b/utils/pugixml/CMakeLists.txt
|
||||||
|
index 09896fb1..cf7b3450 100644
|
||||||
|
--- a/utils/pugixml/CMakeLists.txt
|
||||||
|
+++ b/utils/pugixml/CMakeLists.txt
|
||||||
|
@@ -6,7 +6,7 @@ if (SENSEI_USE_EXTERNAL_pugixml)
|
||||||
|
@ONLY)
|
||||||
|
|
||||||
|
install(
|
||||||
|
- FILES "${CMAKE_BINARY_DIR}/lib/cmake/pugixml.cmake"
|
||||||
|
+ FILES "${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/cmake/pugixml.cmake"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake")
|
||||||
|
else ()
|
||||||
|
add_library(pugixml STATIC src/pugixml.cpp)
|
@ -0,0 +1,23 @@
|
|||||||
|
diff --git a/CMake/version.cmake b/CMake/version.cmake
|
||||||
|
index ea171ade..f2b85e76 100644
|
||||||
|
--- a/CMake/version.cmake
|
||||||
|
+++ b/CMake/version.cmake
|
||||||
|
@@ -1,12 +1,14 @@
|
||||||
|
set(tmp)
|
||||||
|
find_package(Git QUIET)
|
||||||
|
if(GIT_FOUND)
|
||||||
|
- execute_process(COMMAND ${GIT_EXECUTABLE}
|
||||||
|
- --git-dir=${CMAKE_SOURCE_DIR}/.git describe --tags
|
||||||
|
- OUTPUT_VARIABLE tmp OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
+ execute_process(COMMAND ${GIT_EXECUTABLE}
|
||||||
|
+ --git-dir=${CMAKE_SOURCE_DIR}/.git describe --tags
|
||||||
|
+ OUTPUT_VARIABLE tmp OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
endif()
|
||||||
|
if(NOT tmp)
|
||||||
|
- set(tmp "v0.0.0")
|
||||||
|
+ # Set this to the latest released version.
|
||||||
|
+ # This version is used when using release tarballs
|
||||||
|
+ set(tmp "v4.0.0")
|
||||||
|
endif()
|
||||||
|
set(SENSEI_VERSION ${tmp} CACHE STRING "SENSEI version" FORCE)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user