From 9d1f6b25cf093d9d37fac2246e82f3b1afa65d60 Mon Sep 17 00:00:00 2001 From: Jg_Piccinali <> Date: Wed, 13 Aug 2025 15:23:35 +0200 Subject: [PATCH 1/5] Update test for ParaView/6.0 --- checks/apps/paraview/paraview.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/checks/apps/paraview/paraview.py b/checks/apps/paraview/paraview.py index af234b83e..a2950f694 100644 --- a/checks/apps/paraview/paraview.py +++ b/checks/apps/paraview/paraview.py @@ -31,11 +31,17 @@ class ParaView_coloredSphere(rfm.RunOnlyRegressionTest): num_tasks = 12 num_tasks_per_node = 6 time_limit = '3m' - executable = '/user-environment/ParaView-5.13/bin/pvbatch' + executable = './ParaView/bin/pvbatch' + # executable = '/user-environment/ParaView-5.13/bin/pvbatch' executable_opts = ['-- coloredSphere.py'] maintainers = ['SSA'] tags = {'production'} + @run_before('run') + def find_pvbatch(self): + self.prerun_cmds = [ + 'ln -fs /user-environment/ParaView-[0-9]* ParaView'] + @run_before('run') def output_file_info(self): self.postrun_cmds = ['file *.png'] @@ -71,8 +77,7 @@ class ParaView_catalystClipping(rfm.RegressionTest): executable = './bin/dummysph_catalystV2' env_vars = { 'CATALYST_IMPLEMENTATION_NAME': 'paraview', - 'CATALYST_IMPLEMENTATION_PATHS': - '/user-environment/ParaView-5.13/lib64/catalyst', + 'CATALYST_IMPLEMENTATION_PATHS': '$PWD/ParaView/lib64/catalyst', 'CATALYST_DATA_DUMP_DIRECTORY': '$PWD/dataset', } maintainers = ['SSA'] @@ -82,9 +87,9 @@ class ParaView_catalystClipping(rfm.RegressionTest): def prepare_build(self): tgz = f'v{self.git_tag}.tar.gz' self.prebuild_cmds = [ - f'# tested with paraview/5.13.2:v2 -v paraview-python', f'wget -q https://github.com/jfavre/DummySPH/archive/refs/tags/' f'{tgz} && tar xf {tgz} && rm -f {tgz}', + f'ln -fs /user-environment/ParaView-[0-9]* ParaView', ] # on eiger, mpicxx/mpicc are broken (g++: No such file) self.build_system.cc = 'gcc' From 33cee831c50181a82ff1ad25c2c8d662adc36d01 Mon Sep 17 00:00:00 2001 From: Jg_Piccinali <> Date: Wed, 12 Nov 2025 12:11:03 +0100 Subject: [PATCH 2/5] Add double gyre test --- checks/apps/paraview/paraview.py | 131 +++++++++++++++++++++---------- 1 file changed, 88 insertions(+), 43 deletions(-) diff --git a/checks/apps/paraview/paraview.py b/checks/apps/paraview/paraview.py index 2be4d4462..c7cee82df 100644 --- a/checks/apps/paraview/paraview.py +++ b/checks/apps/paraview/paraview.py @@ -1,4 +1,4 @@ -# Copyright 2016 Swiss National Supercomputing Centre (CSCS/ETH Zurich) +# Copyright Swiss National Supercomputing Centre (CSCS/ETH Zurich) # ReFrame Project Developers. See the top-level LICENSE file for details. # # SPDX-License-Identifier: BSD-3-Clause @@ -8,7 +8,7 @@ @rfm.simple_test -class ParaView_coloredSphere(rfm.RunOnlyRegressionTest): +class paraview_colored_sphere(rfm.RunOnlyRegressionTest): """ daint: ParaView Version (5, 13, 2) @@ -26,22 +26,17 @@ class ParaView_coloredSphere(rfm.RunOnlyRegressionTest): Renderer: softpipe writing coloredSphere_v5.13.2.OSMESA.png """ - valid_systems = ['+uenv'] - valid_prog_environs = ['+paraview-python'] + descr = 'ParaView pvbatch coloredSphere.py test' + valid_systems = ['+uenv +nvgpu', '+uenv -nvgpu -amdgpu'] + valid_prog_environs = ['+uenv +paraview-python'] num_tasks = 12 num_tasks_per_node = 6 time_limit = '3m' - executable = './ParaView/bin/pvbatch' - # executable = '/user-environment/ParaView-5.13/bin/pvbatch' + executable = 'pvbatch' executable_opts = ['-- coloredSphere.py'] - maintainers = ['jfavre', 'biddisco', 'SSA'] + maintainers = ['jfavre', 'biddisco', 'albestro', 'SSA'] tags = {'production'} - @run_before('run') - def find_pvbatch(self): - self.prerun_cmds = [ - 'ln -fs /user-environment/ParaView-[0-9]* ParaView'] - @run_before('run') def output_file_info(self): self.postrun_cmds = ['file *.png'] @@ -64,11 +59,11 @@ def assert_vendor_renderer(self): @rfm.simple_test -class ParaView_catalystClipping(rfm.RegressionTest): - valid_systems = ['+uenv +remote'] - valid_prog_environs = ['+paraview-python'] - git_tag = variable(str, value='0.1') - sourcesdir = None +class paraview_catalyst_clipping(rfm.RegressionTest): + descr = 'ParaView Catalyst DummySPH test' + valid_systems = ['+uenv +nvgpu', '+uenv -nvgpu -amdgpu'] + valid_prog_environs = ['+uenv +paraview-python'] + sourcesdir = 'https://github.com/jfavre/DummySPH.git' build_system = 'CMake' build_locally = False num_tasks = 1 @@ -77,47 +72,97 @@ class ParaView_catalystClipping(rfm.RegressionTest): executable = './bin/dummysph_catalystV2' env_vars = { 'CATALYST_IMPLEMENTATION_NAME': 'paraview', - 'CATALYST_IMPLEMENTATION_PATHS': '$PWD/ParaView/lib64/catalyst', - 'CATALYST_DATA_DUMP_DIRECTORY': '$PWD/dataset', + 'CATALYST_IMPLEMENTATION_PATHS': + '/user-environment/paraview/lib64/catalyst', + 'CATALYST_DATA_DUMP_DIRECTORY': 'dataset', + 'VTK_SILENCE_GET_VOID_POINTER_WARNINGS': '1' } - maintainers = ['jfavre', 'biddisco', 'SSA'] + maintainers = ['jfavre', 'biddisco', 'albestro', 'SSA'] tags = {'production'} @run_before('compile') def prepare_build(self): - tgz = f'v{self.git_tag}.tar.gz' - self.prebuild_cmds = [ - f'wget -q https://github.com/jfavre/DummySPH/archive/refs/tags/' - f'{tgz} && tar xf {tgz} && rm -f {tgz}', - f'ln -fs /user-environment/ParaView-[0-9]* ParaView', + self.build_system.config_opts = ['-S src', '-DINSITU=Catalyst'] + + @run_before('run') + def prepare_job(self): + self.executable_opts = [ + f'--catalyst', + f'ParaView_scripts/catalyst_clipping.py' ] - # on eiger, mpicxx/mpicc are broken (g++: No such file) - self.build_system.cc = 'gcc' - self.build_system.cxx = 'g++' - self.build_system.config_opts = [ - f'-S DummySPH-{self.git_tag}/src', - '-DINSITU=Catalyst' + self.prerun_cmds = [''] + self.postrun_cmds = [ + '', + 'head -1 datasets/dataset_000001.vtpd', + 'head -1 head datasets/dataset_000001/dataset_000001_0.vtp', + 'file datasets/RenderView1_000001.png' ] + @sanity_function + def assert_runtime(self): + regex_1 = r'VTKFile type=\"vtkPartitionedDataSet\"' + regex_2 = r'VTKFile type=\"PolyData\"' + regex_3 = r'PNG image data,' # 1024 x 1024, 8-bit/color RGB + + return sn.all([ + sn.assert_found(regex_1, self.stdout), + sn.assert_found(regex_2, self.stdout), + sn.assert_found(regex_3, self.stdout), + ]) + + +@rfm.simple_test +class paraview_catalyst_double_gyre(rfm.RegressionTest): + descr = 'ParaView Catalyst Double Gyre test' + valid_systems = ['+uenv +nvgpu', '+uenv -nvgpu -amdgpu'] + valid_prog_environs = ['+uenv +paraview-python'] + sourcesdir = 'https://github.com/jfavre/InSitu-Vis-Tutorial.git' + build_system = 'CMake' + build_locally = False + num_tasks = 1 + num_tasks_per_node = 1 + time_limit = '3m' + executable = 'bin/double_gyre_catalyst' + env_vars = { + 'CATALYST_IMPLEMENTATION_NAME': 'paraview', + 'CATALYST_IMPLEMENTATION_PATHS': + '/user-environment/paraview/lib64/catalyst', + 'CATALYST_DATA_DUMP_DIRECTORY': 'dataset', + 'VTK_SILENCE_GET_VOID_POINTER_WARNINGS': '1' + } + maintainers = ['jfavre', 'biddisco', 'albestro', 'SSA'] + tags = {'production'} + + @run_before('compile') + def prepare_build(self): + # on eiger, mpicxx/mpicc were broken (g++: No such file), + # keeping for reference: + # self.build_system.cc = 'gcc' + # self.build_system.cxx = 'g++' + self.build_system.config_opts = [ + '-S Examples/DoubleGyre/C++', '-DINSITU=Catalyst'] + @run_before('run') - def prepare_runtime(self): + def prepare_job(self): self.executable_opts = [ - '--catalyst', - f'DummySPH-{self.git_tag}/ParaView_scripts/catalyst_clipping.py'] + '128 64 10', './Examples/DoubleGyre/Python/pvDoubleGyre.py' + ] + self.prerun_cmds = [''] self.postrun_cmds = [ - 'head -1 datasets/dataset_000020/dataset_000020_0.vtp', - 'head -1 datasets/dataset_000020.vtpd', - 'file datasets/RenderView1_000020.png' + '', + 'head -1 datasets/doublegyre_000010.vtpd', + 'head -1 datasets/doublegyre_000010/doublegyre_000010_0.vti', + 'file datasets/RenderView1_000010.png' ] @sanity_function def assert_runtime(self): - regex_vtp = r'VTKFile type=\"PolyData\"' - regex_vtpd = r'VTKFile type=\"vtkPartitionedDataSet\"' - regex_png = r'PNG image data,' # 1024 x 1024, 8-bit/color RGB + regex_1 = r'VTKFile type=\"vtkPartitionedDataSet\"' + regex_2 = r'VTKFile type=\"ImageData\"' + regex_3 = r'PNG image data,' # 1280 x 768, 8-bit/color RGB return sn.all([ - sn.assert_found(regex_vtp, self.stdout), - sn.assert_found(regex_vtpd, self.stdout), - sn.assert_found(regex_png, self.stdout), + sn.assert_found(regex_1, self.stdout), + sn.assert_found(regex_2, self.stdout), + sn.assert_found(regex_3, self.stdout) ]) From d1e37d1f91a0b1b01bddf6c9bbc8bf39b856156e Mon Sep 17 00:00:00 2001 From: Jean-guillaume Piccinali Date: Wed, 12 Nov 2025 12:17:25 +0100 Subject: [PATCH 3/5] Update checks/apps/paraview/paraview.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- checks/apps/paraview/paraview.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/checks/apps/paraview/paraview.py b/checks/apps/paraview/paraview.py index c7cee82df..429254f62 100644 --- a/checks/apps/paraview/paraview.py +++ b/checks/apps/paraview/paraview.py @@ -94,7 +94,7 @@ def prepare_job(self): self.postrun_cmds = [ '', 'head -1 datasets/dataset_000001.vtpd', - 'head -1 head datasets/dataset_000001/dataset_000001_0.vtp', + 'head -1 datasets/dataset_000001/dataset_000001_0.vtp', 'file datasets/RenderView1_000001.png' ] From a82e7b6ca46e7134369b8aa674f9cf7d2dd03387 Mon Sep 17 00:00:00 2001 From: Jg_Piccinali <> Date: Wed, 12 Nov 2025 12:38:29 +0100 Subject: [PATCH 4/5] eiger --- checks/apps/paraview/paraview.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/checks/apps/paraview/paraview.py b/checks/apps/paraview/paraview.py index c7cee82df..33f2ecde4 100644 --- a/checks/apps/paraview/paraview.py +++ b/checks/apps/paraview/paraview.py @@ -10,7 +10,7 @@ @rfm.simple_test class paraview_colored_sphere(rfm.RunOnlyRegressionTest): """ - daint: + --- daint: ParaView Version (5, 13, 2) rank= 0 / 12 Vendor: NVIDIA Corporation @@ -18,12 +18,16 @@ class paraview_colored_sphere(rfm.RunOnlyRegressionTest): Renderer: NVIDIA GH200 120GB/PCIe writing coloredSphere_v5.13.2.EGL.png - eiger: + --- eiger: ParaView Version (5, 13, 2) rank= 0 / 12 - Vendor: Mesa + Vendor: Mesa/X.org Version: 3.3 (Core Profile) Mesa 23.3.6 Renderer: softpipe + or + Version: 4.5 (Compatibility Profile) Mesa 22.3.5 + Renderer: llvmpipe (LLVM 15.0.7, 256 bits) + writing coloredSphere_v5.13.2.OSMESA.png """ descr = 'ParaView pvbatch coloredSphere.py test' @@ -46,7 +50,7 @@ def assert_vendor_renderer(self): arch = self.current_partition.processor.arch regex_vendor = {'zen2': 'Mesa', 'neoverse_v2': 'NVIDIA Corporation'} regex_render = { - 'zen2': 'Renderer: softpipe', + 'zen2': 'Renderer: (softpipe|llvmpipe)', 'neoverse_v2': 'Renderer: NVIDIA GH200' } regex_png = 'PNG image data,' # 1024 x 1024, 8-bit/color RGB @@ -61,7 +65,7 @@ def assert_vendor_renderer(self): @rfm.simple_test class paraview_catalyst_clipping(rfm.RegressionTest): descr = 'ParaView Catalyst DummySPH test' - valid_systems = ['+uenv +nvgpu', '+uenv -nvgpu -amdgpu'] + valid_systems = ['+uenv +nvgpu'] valid_prog_environs = ['+uenv +paraview-python'] sourcesdir = 'https://github.com/jfavre/DummySPH.git' build_system = 'CMake' From 939ad5a6953d3c267435722e3e2155d578702ed1 Mon Sep 17 00:00:00 2001 From: Jg_Piccinali <> Date: Wed, 12 Nov 2025 12:50:44 +0100 Subject: [PATCH 5/5] Add paraview --- ci/scripts/alps.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/scripts/alps.sh b/ci/scripts/alps.sh index 45b64d955..7d889cffc 100755 --- a/ci/scripts/alps.sh +++ b/ci/scripts/alps.sh @@ -113,7 +113,7 @@ jfrog_login() { uenv_image_find() { # uf |egrep -v "scorep|prgenv|paraview|netcdf-tools|linaro-forge|linalg|jupyterlab|julia|editors" \ # |grep -v 'size(MB)' |cut -d/ -f1 |sort -u - ignore_list="scorep|paraview|netcdf-tools|linaro-forge|jupyterlab|julia|editors" + ignore_list="scorep|netcdf-tools|linaro-forge|jupyterlab|julia|editors" if [ -z $MY_UENV ] ;then # -z MY_UENV means # get the list of deployed supported apps (skip header line):