diff --git a/checks/apps/paraview/paraview.py b/checks/apps/paraview/paraview.py index ccb027ae4..030e128eb 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,9 +8,9 @@ @rfm.simple_test -class ParaView_coloredSphere(rfm.RunOnlyRegressionTest): +class paraview_colored_sphere(rfm.RunOnlyRegressionTest): """ - daint: + --- daint: ParaView Version (5, 13, 2) rank= 0 / 12 Vendor: NVIDIA Corporation @@ -18,22 +18,27 @@ class ParaView_coloredSphere(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 """ - 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 = '/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') @@ -45,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 @@ -58,11 +63,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'] + valid_prog_environs = ['+uenv +paraview-python'] + sourcesdir = 'https://github.com/jfavre/DummySPH.git' build_system = 'CMake' build_locally = False num_tasks = 1 @@ -72,47 +77,96 @@ class ParaView_catalystClipping(rfm.RegressionTest): env_vars = { 'CATALYST_IMPLEMENTATION_NAME': 'paraview', 'CATALYST_IMPLEMENTATION_PATHS': - '/user-environment/ParaView-5.13/lib64/catalyst', - 'CATALYST_DATA_DUMP_DIRECTORY': '$PWD/dataset', + '/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'# 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}', + 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 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) ]) 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):