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("cinema", default=False, description="Enable Cinema")
|
||||
variant("paraview", default=False, description="Enable ParaView")
|
||||
variant("sensei", default=False, description="Enable Sensei")
|
||||
variant("sz", default=False, description="Enable SZ")
|
||||
variant("visit", default=False, description="Enable VisIt")
|
||||
variant("vtkm", default=False, description="Enable VTK-m")
|
||||
variant("zfp", default=False, description="Enable ZFP")
|
||||
|
||||
# Outstanding build issues
|
||||
variant("sensei", default=False, description="Enable Sensei")
|
||||
conflicts("+sensei")
|
||||
|
||||
############################################################
|
||||
# Dependencies
|
||||
############################################################
|
||||
@ -115,13 +112,10 @@ class EcpDataVisSdk(BundlePackage, CudaPackage, ROCmPackage):
|
||||
|
||||
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", "vtkm"]]
|
||||
propagate_to_sensei = [(v, v) for v in ["adios2", "ascent", "hdf5"]]
|
||||
propagate_to_sensei.extend([("paraview", "catalyst"), ("visit", "libsim")])
|
||||
dav_sdk_depends_on(
|
||||
"sensei@develop +vtkio +python ~miniapps",
|
||||
when="+sensei",
|
||||
propagate=dict(propagate_to_sensei),
|
||||
"sensei@4: ~vtkio +python", when="+sensei", propagate=dict(propagate_to_sensei)
|
||||
)
|
||||
|
||||
# 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):
|
||||
"""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
|
||||
future analysis backends. Existing backends include: Paraview/Catalyst,
|
||||
Visit/Libsim, ADIOS, Python scripts, and so on."""
|
||||
@ -19,6 +19,7 @@ class Sensei(CMakePackage):
|
||||
maintainers = ["sshudler", "kwryankrattiger"]
|
||||
|
||||
version("develop", branch="develop")
|
||||
version("4.0.0", sha256="fc1538aa1051789dbdefbe18b7f251bc46e7a6ae1db3a940c123552e0318db8b")
|
||||
version("3.2.2", sha256="d554b654880e899d97d572f02de87b0202faadaf899420ef871093b5bce320c0")
|
||||
version("3.2.1", sha256="7438fb4b148e4d1eb888c619366d0d8639122ecbbf1767e19549d6ca0c8698ca")
|
||||
version("3.2.0", sha256="fd1a69134d9f8151d85a7f84a67d6a648aef5580585b39f74a56367cff433c82")
|
||||
@ -36,8 +37,13 @@ class Sensei(CMakePackage):
|
||||
variant("libsim", default=False, description="Build with VisIt-Libsim support")
|
||||
variant("vtkio", default=False, description="Enable adaptors to write to VTK XML format")
|
||||
variant("adios2", default=False, description="Enable ADIOS2 adaptors and endpoints")
|
||||
variant("hdf5", default=False, description="Enables HDF5 adaptors and endpoints")
|
||||
variant("vtkm", default=False, description="Enable VTKm 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",
|
||||
when="@4: +catalyst",
|
||||
)
|
||||
variant("python", default=False, description="Enable Python bindings")
|
||||
variant(
|
||||
"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
|
||||
# Paraview 6 cannot be used since it requires Python 3. Starting from
|
||||
# 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@5.5.0:5.5.2+python+mpi+hdf5", when="@:2.1.1 +catalyst+python")
|
||||
depends_on("paraview@5.6:5.7+mpi+hdf5", when="@3:3.2.1 +catalyst")
|
||||
depends_on("paraview@5.6:5.7+python3+mpi+hdf5", when="@3:3.2.1 +catalyst+python")
|
||||
depends_on("paraview+mpi+hdf5", when="+catalyst")
|
||||
depends_on("paraview+python3+mpi+hdf5", when="+catalyst+python")
|
||||
depends_on("visit~gui~python", when="+libsim")
|
||||
depends_on("vtk@8.1.0:8.1.2", when="+libsim")
|
||||
depends_on("vtk", when="~libsim ~catalyst")
|
||||
depends_on("vtk+python", when="~libsim ~catalyst+python")
|
||||
depends_on("paraview+mpi", when="+catalyst")
|
||||
depends_on("paraview+hdf5", when="+catalyst+hdf5")
|
||||
depends_on("paraview+python", when="@:2 +catalyst+python")
|
||||
depends_on("paraview+python3", when="@3: +catalyst+python")
|
||||
|
||||
depends_on("paraview@5.5.0:5.5.2", when="@:2.1.1 +catalyst")
|
||||
depends_on("paraview@5.6:5.7", when="@3:3.2.1 +catalyst")
|
||||
depends_on("paraview@5.7:5.9", when="@3.2.2 +catalyst")
|
||||
depends_on("paraview@5.7:5.10", when="@4: +catalyst")
|
||||
|
||||
# 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")
|
||||
|
||||
# Ascent
|
||||
depends_on("ascent", when="+ascent")
|
||||
|
||||
# VTK needs +hl and currently spack cannot resolve +hl and ~hl
|
||||
depends_on("hdf5+hl", when="+hdf5")
|
||||
# HDF5
|
||||
depends_on("hdf5", when="+hdf5")
|
||||
|
||||
# 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@3:", when="@3: +python", type=("build", "run"))
|
||||
@ -70,15 +91,18 @@ class Sensei(CMakePackage):
|
||||
depends_on("swig", when="+python", type="build")
|
||||
depends_on("cmake@3.6:", when="@3:", type="build")
|
||||
depends_on("pugixml")
|
||||
depends_on("mpi")
|
||||
|
||||
# Since sensei always has a VTK dependency, either directly or indirectly,
|
||||
# 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
|
||||
# Can have either LibSim or Catalyst or Ascent, but not a combination
|
||||
conflicts("+libsim", when="+catalyst")
|
||||
# hdf5 variant is available only for SENSEI 3
|
||||
conflicts("+hdf5", when="@:2.1.1")
|
||||
conflicts("+ascent", when="+catalyst")
|
||||
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):
|
||||
spec = self.spec
|
||||
@ -88,6 +112,11 @@ def cmake_args(self):
|
||||
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
|
||||
self.define("SENSEI_USE_EXTERNAL_pugixml", 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_VTKM", "vtkm"),
|
||||
self.define_from_variant("ENABLE_CATALYST", "catalyst"),
|
||||
@ -100,12 +129,16 @@ def cmake_args(self):
|
||||
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:
|
||||
args.append(
|
||||
"-DVISIT_DIR:PATH={0}/current/{1}-{2}".format(
|
||||
spec["visit"].prefix, spec.platform, spec.target.family
|
||||
)
|
||||
)
|
||||
# This is only for linux
|
||||
# Visit install location may be different on other platforms
|
||||
args.append("-DVISIT_DIR:PATH={0}/current/linux-x86_64".format(spec["visit"].prefix))
|
||||
|
||||
if "+python" in spec:
|
||||
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