Skip to content
Snippets Groups Projects
Commit c18715f3 authored by Damian Alvarez's avatar Damian Alvarez
Browse files

Merge branch 'merge_sprint_28.19.2020' into '2020'

Merge sprint 28.19.2020

See merge request hps-public/easybuild-repository!367
parents a0dd642c b7e3f82c
Branches
No related tags found
No related merge requests found
easyblock = "ConfigureMake"
name = "darshan-runtime"
version = "3.2.1"
homepage = 'http://www.mcs.anl.gov/research/projects/darshan/'
description = """Darshan is designed to capture an accurate picture of
application I/O behavior, including properties such as patterns of
access within files, with minimum overhead. The name is taken from a
Sanskrit word for “sight” or “vision”.
Darshan can be used to investigate and tune the I/O behavior of
complex HPC applications. In addition, Darshan’s lightweight design
makes it suitable for full time deployment for workload
characterization of large systems. We hope that such studies will
help the storage research community to better serve the needs of
scientific computing.
Darshan was originally developed on the IBM Blue Gene series of
computers deployed at the Argonne Leadership Computing Facility, but
it is portable across a wide variety of platforms include the Cray
XE6, Cray XC30, and Linux clusters. Darshan routinely instruments
jobs using up to 786,432 compute cores on the Mira system at ALCF.
"""
usage = """
Export the environment variable DARSHAN_LOG_PATH to where the logging
data should be written, e.g.
LD_PRELOAD=$EBROOTDARSHANMINRUNTIME/lib/libdarshan.so \
DARSHAN_LOG_PATH=/path/to/your/logdir \
srun -n 32 ./executable
Note:
Darshan currently only works with C or C++ codes, not with Fortran.
"""
site_contacts = 'a.strube@fz-juelich.de'
toolchain = {'name': 'gpsmpi', 'version': '2020'}
sources = ['ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-%s.tar.gz' % version]
local_subpath = 'darshan-runtime'
preconfigopts = 'cd %s;' % local_subpath
configopts = '--with-mem-align=8 --with-log-path-by-env=DARSHAN_LOG_PATH --with-jobid-env=SLURM_JOBID CC=mpicc'
prebuildopts = 'cd %s;' % local_subpath
preinstallopts = 'cd %s;' % local_subpath
sanity_check_paths = {
'files': ["lib/libdarshan.so"],
'dirs': []
}
moduleclass = 'lib'
easyblock = "ConfigureMake"
name = "darshan-util"
version = "3.2.1"
homepage = 'http://www.mcs.anl.gov/research/projects/darshan/'
description = """Darshan is designed to capture an accurate picture of
application I/O behavior, including properties such as patterns of
access within files, with minimum overhead. The name is taken from a
Sanskrit word for “sight” or “vision”.
Darshan can be used to investigate and tune the I/O behavior of
complex HPC applications. In addition, Darshan’s lightweight design
makes it suitable for full time deployment for workload
characterization of large systems. We hope that such studies will
help the storage research community to better serve the needs of
scientific computing.
Darshan was originally developed on the IBM Blue Gene series of
computers deployed at the Argonne Leadership Computing Facility, but
it is portable across a wide variety of platforms include the Cray
XE6, Cray XC30, and Linux clusters. Darshan routinely instruments
jobs using up to 786,432 compute cores on the Mira system at ALCF.
"""
usage = """
The result is a darshan log file which can be converted using
darshan-job-summary.pl /path/to/your/logdir/mylog.darshan.gz
Note:
Darshan currently only works with C or C++ codes, not with Fortran.
"""
site_contacts = 'a.strube@fz-juelich.de'
toolchain = {'name': 'gpsmpi', 'version': '2020'}
sources = ['ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-%s.tar.gz' % version]
local_subpath = 'darshan-util'
preconfigopts = 'cd %s;' % local_subpath
prebuildopts = 'cd %s;' % local_subpath
preinstallopts = 'cd %s;' % local_subpath
sanity_check_paths = {
'files': ["bin/darshan-job-summary.pl"],
'dirs': []
}
dependencies = [
("gnuplot", "5.2.8"),
("Perl", "5.32.0"),
]
moduleclass = 'lib'
name = "IDL"
version = "8.5.1"
homepage = "http://www.exelisvis.com"
description = """IDL is the trusted scientific programming language used across disciplines to extract meaningful
visualizations from complex numerical data.
"""
site_contacts = 'sc@fz-juelich.de'
toolchain = {'name': 'GCCcore', 'version': '8.3.0'}
builddependencies = [
('binutils', '2.32'),
]
dependencies = [
('X11', '20190311'),
]
sources = ['idl85envi53sp1linux.x86_64.tar.gz']
sanity_check_paths = {
'files' : [],
'dirs' : ['idl/bin']
}
modextravars = {
'IDL_DIR': '%(installdir)s/idl',
'IDL_LMGRD_LICENSE_FILE': '1706@idllic1.fz-juelich.de:1706@idllic2.fz-juelich.de:1706@idllic3.fz-juelich.de',
}
modluafooter = 'prepend_path("LM_LICENSE_FILE", "1706@idllic1.fz-juelich.de:1706@idllic2.fz-juelich.de:1706@idllic3.fz-juelich.de")'
moduleclass = "vis"
easyblock = 'PackedBinary'
name = 'Julia.MPI'
version = '0.15.1'
homepage = 'https://juliaparallel.github.io/MPI.jl/stable/configuration/'
description = """This provides Julia interface to the Message Passing Interface (MPI),
roughly inspired by mpi4py.
"""
site_contacts = 'j.goebbert@fz-juelich.de'
toolchain = {'name': 'gpsmkl', 'version': '2020'}
toolchainopts = {'pic': True, 'usempi': True}
sources = [{
'source_urls': ['https://github.com/JuliaParallel/MPI.jl/archive/'],
'filename': 'MPI.jl-%(version)s.tar.gz',
'download_filename': 'v%(version)s.tar.gz',
'extract_cmd': "tar xfvz %s",
}]
builddependencies = [
('binutils', '2.34'),
]
dependencies = [
('Julia', '1.5.2', '', ('gcccoremkl', '9.3.0-2020.2.254')),
]
extract_sources = True
install_cmd = (
'export JULIA_DEPOT_PATH=%(installdir)s; '
'$EBROOTJULIA/bin/julia -e \'ENV["JULIA_MPI_BINARY"]="system"; using Pkg; Pkg.add("MPI"); Pkg.build("MPI")\'; ' +
'$EBROOTJULIA/bin/julia -e \'import MPI; MPI.install_mpiexecjl()\' ')
modextrapaths = {
'PATH': 'bin',
'JULIA_DEPOT_PATH': '',
}
# Ensure that the user-specific $HOME/.julia is always first entry in JULIA_DEPOT_PATH
modluafooter = """
prepend_path("JULIA_DEPOT_PATH", pathJoin(os.getenv("HOME"), ".julia"))
"""
sanity_check_paths = {
'files': ['bin/mpiexecjl'],
'dirs': ['bin', 'registries', 'packages/MPI']
}
moduleclass = 'lang'
easyblock = 'ConfigureMake'
name = 'Julia'
version = '1.5.2'
homepage = 'https://julialang.org/'
description = """Julia was designed from the beginning for high performance.
Julia programs compile to efficient native code for multiple platforms via LLVM
"""
site_contacts = 'j.goebbert@fz-juelich.de'
toolchain = {'name': 'gcccoremkl', 'version': '9.3.0-2020.2.254'}
toolchainopts = {'pic': True}
source_urls = ['https://github.com/JuliaLang/julia/releases/download/v%(version)s/']
sources = ['julia-%(version)s-full.tar.gz']
builddependencies = [
('binutils', '2.34'),
('git', '2.28.0'),
('CMake', '3.18.0'),
]
dependencies = [
('GMP', '6.2.0'),
]
osdependencies = [('openssl')]
skipsteps = ['configure']
buildopts = " USE_SYSTEM_GMP=1 USE_SYSTEM_CURL=1 USE_INTEL_MKL=1 "
installopts = "prefix=%(installdir)s "
modextrapaths = {
'PATH': 'bin',
}
sanity_check_paths = {
'files': ['bin/julia', 'include/julia/julia.h', 'lib/libjulia.so'],
'dirs': ['bin', 'etc', 'include', 'lib', 'share']
}
moduleclass = 'lang'
easyblock = 'CMakeMake'
name = 'ParaView'
version = '5.8.1'
versionsuffix = '-EGL-Python-%(pyver)s'
homepage = "http://www.paraview.org"
description = """Paraview is a scientific parallel visualizer.
"""
site_contacts = 'j.goebbert@fz-juelich.de'
toolchain = {'name': 'gpsmkl', 'version': '2020'}
toolchainopts = {'pic': True, 'usempi': True}
local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile='
local_dwnlsfx_dat = 'download.php?submit=Download&version=v%(version_major_minor)s&type=data&os=Sources&downloadFile='
local_dwnlsfx_tdat = 'download.php?submit=Download&version=v%(version_major_minor)s&type=data&os=Sources&downloadFile='
source_urls = [('http://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_src),
('http://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_dat)]
# ('http://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_tdat),
sources = [("ParaView-v%(version)s.tar.gz"),
("ParaViewData-v%(version)s.tar.gz")]
# ("ParaViewTestingData-v%(version)s.tar.gz"),
checksums = [('sha256', '384241fc69bbdb412465dcb5ef88b88ee7ae0e92e7d7cde53be54b19296cf9fa'),
('sha256', '9bf8f6acc4533520143ba2e19a04f6c34b1537c0b9c95d8e975623eafe3acea9')]
patches = [
("python-5.8.1-simpleCatalystSupport_0.4.patch"),
]
builddependencies = [
('CMake', '3.18.0'),
]
dependencies = [
('Python', '3.8.5'),
('Boost', '1.74.0', '', ('gpsmpi', '2020')),
('X11', '20200222'),
('bzip2', '1.0.8'),
('HDF5', '1.10.6'),
('FFmpeg', '4.3.1'),
('Embree', '3.8.0'),
('OSPRay', '1.8.4'),
('libpng', '1.6.37'),
('expat', '2.2.9'),
('freetype', '2.10.1'),
('libjpeg-turbo', '2.0.5'),
('libxml2', '2.9.10'),
('LibTIFF', '4.1.0'),
('zlib', '1.2.11'),
('netCDF', '4.7.4'),
('netCDF-C++4', '4.3.1'),
('netCDF-Fortran', '4.5.3'),
('mpi4py', '3.0.3', '-Python-%(pyver)s'),
# ('VTK', '8.2.0', '-Python-%(pyver)s', ('gcccoremkl', '8.3.0-2019.3.199')),
# ('VTKm','1.1.0','-AVX2'),
('Qt5', '5.14.2'),
('SciPy-Stack', '2020', '-Python-%(pyver)s', ('gcccoremkl', '9.3.0-2020.2.254')),
('VirtualGL', '2.6.4'),
('OpenGL', '2020'),
]
separate_build_dir = True
# parallel = 24
########################################################################################
# check ParaView Superbuild options #
# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master #
# #
# check ParaView Build documenation #
# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md #
########################################################################################
configopts = '-DCMAKE_POLICY_DEFAULT_CMP0074=OLD '
configopts += '-DCMAKE_POLICY_DEFAULT_CMP0077=OLD '
# --- general settings --- #
configopts += '-DCMAKE_CXX_STANDARD=11 '
configopts += '-DCXX_STANDARD_REQUIRED=ON '
configopts += '-DCMAKE_CXX_EXTENSIONS=OFF ' # eg.-std=c++11 rather than -std=gnu++11
configopts += '-DVTK_USE_CXX11_FEATURES=ON '
# configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
configopts += '-DBUILD_TESTING=OFF ' # Without internet connection turn off testing
# Or consult https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
# and download ExternalData to $EASYBUILD_SOURCEPATH and adjust -DExternalData_OBJECT_STORES accordingly
# configopts += '-DExternalData_OBJECT_STORES=%(builddir)s/ExternalData '
configopts += '-DBUILD_EXAMPLES=ON '
configopts += '-DCMAKE_BUILD_TYPE=Release '
configopts += '-DZLIB_LIBRARY_DEBUG=$EBROOTZLIB/lib/libz.so '
# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524
configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" '
configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" '
configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL '
configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF '
configopts += '-DPARAVIEW_USE_QT=OFF '
configopts += '-DPARAVIEW_QT_VERSION=5 '
configopts += '-DPARAVIEW_ENABLE_WEB=ON '
configopts += '-DPARAVIEW_SHARED_LIBS=ON '
configopts += '-DPARAVIEW_USE_PYTHON=ON '
configopts += '-DPARAVIEW_PYTHON_VERSION=3 '
configopts += "-DPYTHON_EXECUTABLE=$EBROOTPYTHON/bin/python "
configopts += '-DVTK_PYTHON_VERSION=3 '
configopts += '-DVTK_NO_PYTHON_THREADS=OFF '
configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF ' # visibility depends on VTK_NO_PYTHON_THREADS=OFF
# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL,
# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk.
# configopts += '-DUSE_EXTERNAL_VTK:BOOL=ON '
# --- parallel (on-node) --- #
# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP '
# --- parallel (distributed) --- #
configopts += '-DMPIEXEC_MAX_NUMPROCS=24 '
configopts += '-DPARAVIEW_USE_MPI=ON '
# --- IO --- #
configopts += '-DXDMF_BUILD_MPI=ON '
configopts += '-DPARAVIEW_ENABLE_XDMF3=ON '
# --- large data --- #
configopts += '-DVTK_USE_64BIT_IDS=ON '
configopts += '-DVTK_USE_LARGE_DATA=ON '
# --- rendering --- #
configopts += '-DVTK_RENDERING_BACKEND:STRING=OpenGL2 '
# OpenGL (hardware)
# https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html
# If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering,
# otherwise VTK_USE_X must be ON and the build does not support headless,
# but can still support offscreen rendering.
# If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON.
# Then the build does not support onscreen rendering, but only headless rendering.
# If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against
# or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client.
# If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON,
# then all the OpenGL and OSMesa variables should point to the Mesa libraries.
# Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables
# should point to the system libraries providing both, typically the NVidia libraries.
configopts += '-DOpenGL_GL_PREFERENCE=GLVND '
configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF '
configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include "
configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE "
configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 "
configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so "
configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 "
configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so "
configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 "
# OpenGL over X
# configopts += '-DVTK_USE_X=ON ' # OFF:headless rendering
# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb)
# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF '
# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
# EGL (off-screen rendering with OpenGL, but without the need for X)
# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test
configopts += '-DVTK_OPENGL_HAS_EGL=ON '
configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
configopts += '-DVTK_USE_X=OFF '
configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 '
# configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/
# configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 '
# configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 '
# configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0>
# OSMesa (software)
# With OSMesa the DISPLAY variable has no meaning and is not needed
# When ON, implies that ParaView can use OSMesa to support headless modes of operation.
# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
# configopts += '-DVTK_USE_X=OFF '
# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON '
# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include '
# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so '
# Raytracing
configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON '
configopts += '-DVTK_ENABLE_OSPRAY=ON '
configopts += '-DVTK_ENABLE_VISRTX=OFF '
configopts += '-DPARAVIEW_USE_OSPRAY=ON '
configopts += "-Dospray_DIR=${EBROOTOSPRAY} "
configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.8.0 "
configopts += '-DModule_vtkRenderingOSPRay=ON '
configopts += '-DVTKOSPRAY_ENABLE_DENOISER=OFF '
# --- extra libs --- #
# configopts += "-DVTKm_DIR=$EBROOTVTKM/lib/cmake/vtkm-1.1/ "
configopts += '-DPARAVIEW_USE_VTKM=ON '
configopts += '-DModule_vtkAcceleratorsVTKm=ON '
configopts += '-DVTKm_Vectorization=AVX2 '
configopts += '-DVTKm_ENABLE_OPENMP=ON '
# configopts += '-DVTKm_ENABLE_MPI=ON '
# configopts += '-DVTKm_ENABLE_LOGGING=ON '
# configopts += '-DVTKm_ENABLE_CUDA=ON '
configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG "
configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
configopts += '-DModule_vtkIOFFMPEG=ON '
configopts += '-DModule_vtkIOVideo=ON '
configopts += '-DModule_SignedTensor=ON '
configopts += '-DModule_vtkDICOM=ON '
# configopts += '-DModule_vtkFiltersMatlab=OFF '
configopts += '-DModule_vtkFiltersReebGraph=ON '
configopts += '-DModule_vtkFiltersSMP=ON '
configopts += '-DModule_vtkFiltersSelection=ON '
# configopts += '-DModule_vtkFiltersStatisticsGnu=OFF '
configopts += '-DModule_vtkFiltersTopology=ON '
# --- coupling --- #
configopts += '-DPARAVIEW_USE_VISITBRIDGE=ON '
configopts += '-DPARAVIEW_ENABLE_CATALYST=ON '
# --- development & testing --- #
configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON '
configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF '
configopts += '-DPARAVIEW_BUILD_EXAMPLES=OFF '
configopts += '-DPARAVIEW_BUILD_TESTING=OFF '
configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF '
configopts += '-DCTEST_TEST_TIMEOUT=10800 '
configopts += '-DExternalData_TIMEOUT_INACTIVITY=0 '
# --- XDMF options --- #
configopts += '-DXDMF_USE_BZIP2=ON '
configopts += '-DXDMF_USE_GZIP=ON '
# --- VTK external libraries --- #
configopts += '-DVTK_USE_SYSTEM_EXPAT=ON '
configopts += '-DVTK_USE_SYSTEM_FREETYPE=ON '
configopts += '-DVTK_USE_SYSTEM_HDF5=ON '
configopts += '-DVTK_USE_SYSTEM_JPEG=ON '
configopts += '-DVTK_USE_SYSTEM_LIBXML2=ON '
configopts += '-DVTK_USE_SYSTEM_MPI4PY=ON '
configopts += '-DVTK_USE_SYSTEM_NETCDF=ON '
configopts += '-DVTK_USE_SYSTEM_PNG=ON '
configopts += '-DVTK_USE_SYSTEM_PYGMENTS=ON '
configopts += '-DVTK_USE_SYSTEM_SIX=ON '
configopts += '-DVTK_USE_SYSTEM_TIFF=ON '
configopts += '-DVTK_USE_SYSTEM_ZLIB=ON '
configopts += '-DNETCDF_CXX_ROOT=$EBROOTNETCDFMINCPLUSPLUS '
configopts += '-DNETCDF_F77_ROOT=$EBROOTNETCDFMINFORTRAN '
configopts += '-DNETCDF_F90_ROOT=$EBROOTNETCDFMINFORTRAN '
# --- ParaView Plugins --- #
# --- ParaView Plugin Autoload --- #
# configopts += '-DPARAVIEW_AUTOLOAD_PLUGIN_AnalyzeNIfTIIO=ON '
# configopts += '-DPARAVIEW_AUTOLOAD_PLUGIN_SurfaceLIC=ON ' # can result in error
# ( 489.245s) [paraview ]vtkOpenGLVertexArrayObj:293 ERR| vtkOpenGLVertexArrayObject (0x3cd7bc0)
# ( 489.245s) [paraview ]vtkOpenGLRenderUtilitie:78 WARN| Error setting 'vertexMC' in shader VAO.
# https://www.paraview.org/pipermail/paraview/2016-March/036518.html
# --- infos
# -- Plugin: AcceleratedAlgorithms - Testing plugin : Enabled
# -- Plugin: AdiosReader - Reader for *.bp files based on Adios : Disabled
# -- Plugin: AdiosStagingReader - Performs staging reads from simulations using ADIOS : Disabled
# -- Plugin: AnalyzeNIfTIIO - Reader/Writer for Analyze and NifTI files : Enabled
# -- Plugin: ArrowGlyph - Glyph with customizable Arrows : Enabled
# -- Plugin: CDIReader - ICON netCDF/CDI Reader : Enabled
# -- Plugin: DigitalRockPhysics - Digital Rock Physics analysis filters : Enabled
# -- Plugin: EmbossingRepresentations - Embossing representations : Enabled
# -- Plugin: EyeDomeLighting - Add 3D View with eye-dome Lighting support : Enabled
# -- Plugin: GMVReader - Reader for binary or ASCII files stored in General Mesh Viewer file format : Enabled
# -- Plugin: GenericIOReader - GenericIO Reader for HACC data : Enabled
# -- Plugin: GeodesicMeasurement - Geodesic Measurement : Enabled
# -- Plugin: GmshReader - Reader for visualization of high-order polynomial solutions under the Gmsh format : off
# -- Plugin: InSituExodus - Experimental memory-conserving Exodus II file reader. : Disabled
# -- Plugin: LagrangianParticleTracker - Highly customizable filter for particle tracking : Enabled
# -- Plugin: MooseXfemClip - Clip partial elements generated by MOOSE XFEM : Enabled
# -- Plugin: Moments - Filters for Flux and Circulation Fields : Enabled
# -- Plugin: NetCDFTimeAnnotationPlugin - Provides NetCDF Time Annotation filter : Enabled
# netcdftime Python module not found! NetCDFTimeAnnotationPlugin not be available until it is installed.
# -- Plugin 'NetCDFTimeAnnotationPlugin' lists plugin library named 'NetCDFTimeAnnotationPlugin'
# -- Plugin: NonOrthogonalSource - Non Orthogonal Source code sample : Enabled
# -- Plugin: OpenVR - OpenVR Support : Disabled
# -- Plugin: PythonQtPlugin - PythonQt Plugin : Disabled
# -- Plugin: SLACTools - SLAC Tools : Enabled
# -- Plugin: SierraPlotTools - Sierra Plotting Tools : Enabled
# -- Plugin: StreamLinesRepresentation - Add animated Stream Lines representation for any type of dataset : Enabled
# -- Plugin: StreamingParticles - Render Particles with Streaming : Enabled
# -- Plugin: SurfaceLIC - Add Surface-LIC vector visualization support : Enabled
# -- Plugin: TemporalParallelismScriptGenerator - Plugin for creating Python spatio-temporal processing scripts : off
# -- Plugin: PacMan - Testing plugin : Enabled
# -- Plugin: ThickenLayeredCells - Filter to thicken layered cells : Enabled
# -- Plugin: VRPlugin - Virtual Reality Devices and Interactor styles : Disabled
# -- Plugin: VTKmFilters - VTKm many-core filters : Enabled
# -- Plugin: VaporPlugin - Plugin to read NCAR VDR files : Disabled
# -- Plugin: pvNVIDIAIndeX - Plugin for NVIDIA IndeX : Enabled
# #########################################################
# The ParaView server can be cranky, test downloads are quite often failing
# Using ; insted of && gives a second chance to download the test files, if the first serial attempt would fail.
# prebuildopts = 'make VTKData ;' # only if: configopts += '-DBUILD_TESTING=ON'
postinstallcmds = ['python -m compileall %(installdir)s/lib64/python3.6/site-packages/']
# 'cp -a %(builddir)s/ParaView-v%(version)s/ %(installdir)s/src', # copy source from build dir to install dir
# '', # move debug info to separate files:
# http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
# '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug>
# # change path to source in debug info
modextravars = {'CUDA_VISIBLE_DEVICES': '0,1'}
# OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.2 -> clame to fully support 3.2
modextravars = {'MESA_GL_VERSION_OVERRIDE': '3.2'}
# modextravars = {'MESA_GLSL_VERSION_OVERRIDE': '??'}
modextravars = {
# OpenMP will choose an optimum number of threads by default, which is usually the number of cores
# 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code
# threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88
# unset => OSPRAY uses all hardware threads
# 'OSPRAY_THREADS': '14', # OSPRay < 2.0
# 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0
# When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS
# https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47
# https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html
# more ospray definitions: https://www.ospray.org/documentation.html#environment-variables
'KNOB_MAX_WORKER_THREADS': '65535', # max. threads used by OpenSWR (limited by number of hardware threads)
# details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14
# more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst
}
modextrapaths = {'PYTHONPATH': 'lib64/python%(pyshortver)s/site-packages'}
moduleclass = 'vis'
easyblock = 'CMakeMake'
name = 'ParaView'
version = '5.8.1'
versionsuffix = '-Python-%(pyver)s'
homepage = "http://www.paraview.org"
description = """Paraview is a scientific parallel visualizer.
"""
site_contacts = 'j.goebbert@fz-juelich.de'
toolchain = {'name': 'gpsmkl', 'version': '2020'}
toolchainopts = {'pic': True, 'usempi': True}
local_dwnlsfx_src = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=Sources&downloadFile='
local_dwnlsfx_dat = 'download.php?submit=Download&version=v%(version_major_minor)s&type=data&os=Sources&downloadFile='
local_dwnlsfx_tdat = 'download.php?submit=Download&version=v%(version_major_minor)s&type=data&os=Sources&downloadFile='
source_urls = [('http://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_src),
('http://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_dat)]
# ('http://www.paraview.org/paraview-downloads/%s' % local_dwnlsfx_tdat),
sources = [("ParaView-v%(version)s.tar.gz"),
("ParaViewData-v%(version)s.tar.gz")]
# ("ParaViewTestingData-v%(version)s.tar.gz"),
checksums = [('sha256', '384241fc69bbdb412465dcb5ef88b88ee7ae0e92e7d7cde53be54b19296cf9fa'),
('sha256', '9bf8f6acc4533520143ba2e19a04f6c34b1537c0b9c95d8e975623eafe3acea9')]
patches = [
("python-5.8.1-simpleCatalystSupport_0.4.patch"),
]
builddependencies = [
('CMake', '3.18.0'),
]
dependencies = [
('Python', '3.8.5'),
('Boost', '1.74.0', '', ('gpsmpi', '2020')),
('X11', '20200222'),
('bzip2', '1.0.8'),
('HDF5', '1.10.6'),
('FFmpeg', '4.3.1'),
('Embree', '3.8.0'),
('OSPRay', '1.8.4'),
('libpng', '1.6.37'),
('expat', '2.2.9'),
('freetype', '2.10.1'),
('libjpeg-turbo', '2.0.5'),
('libxml2', '2.9.10'),
('LibTIFF', '4.1.0'),
('zlib', '1.2.11'),
('netCDF', '4.7.4'),
('netCDF-C++4', '4.3.1'),
('netCDF-Fortran', '4.5.3'),
('mpi4py', '3.0.3', '-Python-%(pyver)s'),
# ('VTK', '8.2.0', '-Python-%(pyver)s', ('gcccoremkl', '8.3.0-2019.3.199')),
# ('VTKm','1.1.0','-AVX2'),
('Qt5', '5.14.2'),
('SciPy-Stack', '2020', '-Python-%(pyver)s', ('gcccoremkl', '9.3.0-2020.2.254')),
('VirtualGL', '2.6.4'),
('OpenGL', '2020'),
]
separate_build_dir = True
# parallel = 24
########################################################################################
# check ParaView Superbuild options #
# https://gitlab.kitware.com/paraview/paraview-superbuild/tree/master #
# #
# check ParaView Build documenation #
# https://gitlab.kitware.com/paraview/paraview/blob/master/Documentation/dev/build.md #
########################################################################################
configopts = '-DCMAKE_POLICY_DEFAULT_CMP0074=OLD '
configopts += '-DCMAKE_POLICY_DEFAULT_CMP0077=OLD '
# --- general settings --- #
configopts += '-DCMAKE_CXX_STANDARD=11 '
configopts += '-DCXX_STANDARD_REQUIRED=ON '
configopts += '-DCMAKE_CXX_EXTENSIONS=OFF ' # eg.-std=c++11 rather than -std=gnu++11
configopts += '-DVTK_USE_CXX11_FEATURES=ON '
# configopts = '-DCMAKE_VERBOSE_MAKEFILE=ON '
configopts += '-DBUILD_TESTING=OFF ' # Without internet connection turn off testing
# Or consult https://gitlab.kitware.com/vtk/vtk/blob/master/Documentation/dev/git/data.md
# and download ExternalData to $EASYBUILD_SOURCEPATH and adjust -DExternalData_OBJECT_STORES accordingly
# configopts += '-DExternalData_OBJECT_STORES=%(builddir)s/ExternalData '
configopts += '-DBUILD_EXAMPLES=ON '
configopts += '-DCMAKE_BUILD_TYPE=Release '
configopts += '-DZLIB_LIBRARY_DEBUG=$EBROOTZLIB/lib/libz.so '
# https://forum.openframeworks.cc/t/nvidia-drivers-pthreads-and-segfaults/2524
configopts += '-DCMAKE_CXX_FLAGS="-lpthread $CMAKE_CXX_FLAGS" '
configopts += '-DCMAKE_C_FLAGS="-lpthread $CMAKE_C_FLAGS" '
configopts += '-DPARAVIEW_BUILD_EDITION=CANONICAL '
configopts += '-DPARAVIEW_BUILD_WITH_KITS=OFF '
configopts += '-DPARAVIEW_USE_QT=ON '
configopts += '-DPARAVIEW_QT_VERSION=5 '
configopts += '-DPARAVIEW_ENABLE_WEB=ON '
configopts += '-DPARAVIEW_SHARED_LIBS=ON '
configopts += '-DPARAVIEW_USE_PYTHON=ON '
configopts += '-DPARAVIEW_PYTHON_VERSION=3 '
configopts += "-DPYTHON_EXECUTABLE=$EBROOTPYTHON/bin/python "
configopts += '-DVTK_PYTHON_VERSION=3 '
configopts += '-DVTK_NO_PYTHON_THREADS=OFF '
configopts += '-DVTK_PYTHON_FULL_THREADSAFE=OFF ' # visibility depends on VTK_NO_PYTHON_THREADS=OFF
# If you pass VTK_PYTHON_FULL_THREADSAFE to true, then each and every call to python will be protected with GIL,
# ensuring that you can have eg. other python interpreter in your application and still use python wrapping in vtk.
# configopts += '-DUSE_EXTERNAL_VTK:BOOL=ON '
# --- parallel (on-node) --- #
# https://blog.kitware.com/simple-parallel-computing-with-vtksmptools-2/
configopts += '-DVTK_SMP_IMPLEMENTATION_TYPE=OpenMP '
# --- parallel (distributed) --- #
configopts += '-DMPIEXEC_MAX_NUMPROCS=24 '
configopts += '-DPARAVIEW_USE_MPI=ON '
# --- IO --- #
configopts += '-DXDMF_BUILD_MPI=ON '
configopts += '-DPARAVIEW_ENABLE_XDMF3=ON '
# --- large data --- #
configopts += '-DVTK_USE_64BIT_IDS=ON '
configopts += '-DVTK_USE_LARGE_DATA=ON '
# --- rendering --- #
configopts += '-DVTK_RENDERING_BACKEND:STRING=OpenGL2 '
# OpenGL (hardware)
# https://kitware.github.io/paraview-docs/latest/cxx/Offscreen.html
# If VTK_OPENGL_HAS_EGL or VTK_OPENGL_HAS_OSMESA is ON, the build supports headless rendering,
# otherwise VTK_USE_X must be ON and the build does not support headless,
# but can still support offscreen rendering.
# If VTK_USE_X is OFF, then either VTK_OPENGL_HAS_OSMESA or VTK_OPENGL_HAS_EGL must be ON.
# Then the build does not support onscreen rendering, but only headless rendering.
# If PARAVIEW_BUILD_QT_GUI is ON and VTK_USE_X is ON, while ParaView command line tools won't link against
# or use X calls, Qt will and hence an accessible X server is still needed to run the desktop client.
# If VTK_OPENGL_HAS_OSMESA is ON, and VTK_USE_X is ON,
# then all the OpenGL and OSMesa variables should point to the Mesa libraries.
# Likewise, if VTK_OPENGL_HAS_EGL is ON and VTK_USE_X is ON, then all the OpenGL and EGL variables
# should point to the system libraries providing both, typically the NVidia libraries.
configopts += '-DOpenGL_GL_PREFERENCE=GLVND '
configopts += '-DVTK_REPORT_OPENGL_ERRORS_IN_RELEASE_BUILDS=OFF '
configopts += "-DOPENGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
configopts += "-DOPENGL_GLX_INCLUDE_DIR=${EBROOTOPENGL}/include "
configopts += "-DOPENGL_EGL_INCLUDE_DIR=${EBROOTOPENGL}/include "
# configopts += "-DOPENGL_xmesa_INCLUDE_DIR=IGNORE "
configopts += "-DOPENGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 "
configopts += "-DOPENGL_gl_LIBRARY=${EBROOTOPENGL}/lib/libGL.so "
configopts += "-DOPENGL_glx_LIBRARY=${EBROOTOPENGL}/lib/libGLX.so.0 "
configopts += "-DOPENGL_glu_LIBRARY=${EBROOTOPENGL}/lib/libGLU.so "
configopts += "-DOPENGL_egl_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 "
# OpenGL over X
configopts += '-DVTK_USE_X=ON ' # OFF:headless rendering
# already considered by Qt (https://gitlab.kitware.com/lorensen/vtk/commit/b29f6db3f746d84f830c81e4212e48db192e4dbb)
configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=OFF '
configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
# EGL (off-screen rendering with OpenGL, but without the need for X)
# call pvserver with –egl-device-index=0 or 1 and –disable-xdisplay-test
# configopts += '-DVTK_OPENGL_HAS_EGL=ON '
# configopts += '-DVTK_OPENGL_HAS_OSMESA=OFF ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
# configopts += '-DVTK_USE_X=OFF '
# configopts += '-DVTK_DEFAULT_EGL_DEVICE_INDEX=0 '
# #configopts += '-DEGL_INCLUDE_DIR=${EBROOTOPENGL}/include/EGL/ ' # https://www.khronos.org/registry/EGL/
# #configopts += '-DEGL_LIBRARY=${EBROOTOPENGL}/lib/libEGL.so.1 '
# #configopts += '-DEGL_opengl_LIBRARY=${EBROOTOPENGL}/lib/libOpenGL.so.0 '
# #configopts += '-DEGL_gldispatch_LIBRARY=${EBROOTOPENGL}/lib/libGLdispatch.so.0 ' # <path_to_libGLdispatch.so.0>
# OSMesa (software)
# With OSMesa the DISPLAY variable has no meaning and is not needed
# When ON, implies that ParaView can use OSMesa to support headless modes of operation.
# configopts += '-DVTK_OPENGL_HAS_OSMESA=ON ' # http://www.paraview.org/Wiki/ParaView_And_Mesa_3D
# configopts += '-DVTK_USE_X=OFF '
# configopts += '-DVTK_DEFAULT_RENDER_WINDOW_OFFSCREEN=ON '
# configopts += '-DOSMESA_INCLUDE_DIR=${EBROOTOPENGL}/include '
# configopts += '-DOSMESA_LIBRARY=${EBROOTOPENGL}/lib/libOSMesa.so '
# Raytracing
configopts += '-DPARAVIEW_ENABLE_RAYTRACING=ON '
configopts += '-DVTK_ENABLE_OSPRAY=ON '
configopts += '-DVTK_ENABLE_VISRTX=OFF '
configopts += '-DPARAVIEW_USE_OSPRAY=ON '
configopts += "-Dospray_DIR=${EBROOTOSPRAY} "
configopts += "-Dembree_DIR=${EBROOTEMBREE}/lib64/cmake/embree-3.8.0 "
configopts += '-DModule_vtkRenderingOSPRay=ON '
configopts += '-DVTKOSPRAY_ENABLE_DENOISER=OFF '
# --- extra libs --- #
# configopts += "-DVTKm_DIR=$EBROOTVTKM/lib/cmake/vtkm-1.1/ "
configopts += '-DPARAVIEW_USE_VTKM=ON '
configopts += '-DModule_vtkAcceleratorsVTKm=ON '
configopts += '-DVTKm_Vectorization=AVX2 '
configopts += '-DVTKm_ENABLE_OPENMP=ON '
# configopts += '-DVTKm_ENABLE_MPI=ON '
# configopts += '-DVTKm_ENABLE_LOGGING=ON '
# configopts += '-DVTKm_ENABLE_CUDA=ON '
configopts += "-DFFMPEG_ROOT=$EBROOTFFMPEG "
configopts += '-DPARAVIEW_ENABLE_FFMPEG=ON '
configopts += '-DModule_vtkIOFFMPEG=ON '
configopts += '-DModule_vtkIOVideo=ON '
configopts += '-DModule_SignedTensor=ON '
configopts += '-DModule_vtkDICOM=ON '
# configopts += '-DModule_vtkFiltersMatlab=OFF '
configopts += '-DModule_vtkFiltersReebGraph=ON '
configopts += '-DModule_vtkFiltersSMP=ON '
configopts += '-DModule_vtkFiltersSelection=ON '
# configopts += '-DModule_vtkFiltersStatisticsGnu=OFF '
configopts += '-DModule_vtkFiltersTopology=ON '
# --- coupling --- #
configopts += '-DPARAVIEW_USE_VISITBRIDGE=ON '
configopts += '-DPARAVIEW_ENABLE_CATALYST=ON '
# --- development & testing --- #
configopts += '-DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON '
configopts += '-DPARAVIEW_BUILD_DEVELOPER_DOCUMENTATION=OFF '
configopts += '-DPARAVIEW_BUILD_EXAMPLES=OFF '
configopts += '-DPARAVIEW_BUILD_TESTING=OFF '
configopts += '-DPARAVIEW_BUILD_VTK_TESTING=OFF '
configopts += '-DCTEST_TEST_TIMEOUT=10800 '
configopts += '-DExternalData_TIMEOUT_INACTIVITY=0 '
# --- XDMF options --- #
configopts += '-DXDMF_USE_BZIP2=ON '
configopts += '-DXDMF_USE_GZIP=ON '
# --- VTK external libraries --- #
configopts += '-DVTK_USE_SYSTEM_EXPAT=ON '
configopts += '-DVTK_USE_SYSTEM_FREETYPE=ON '
configopts += '-DVTK_USE_SYSTEM_HDF5=ON '
configopts += '-DVTK_USE_SYSTEM_JPEG=ON '
configopts += '-DVTK_USE_SYSTEM_LIBXML2=ON '
configopts += '-DVTK_USE_SYSTEM_MPI4PY=ON '
configopts += '-DVTK_USE_SYSTEM_NETCDF=ON '
configopts += '-DVTK_USE_SYSTEM_PNG=ON '
configopts += '-DVTK_USE_SYSTEM_PYGMENTS=ON '
configopts += '-DVTK_USE_SYSTEM_SIX=ON '
configopts += '-DVTK_USE_SYSTEM_TIFF=ON '
configopts += '-DVTK_USE_SYSTEM_ZLIB=ON '
configopts += '-DNETCDF_CXX_ROOT=$EBROOTNETCDFMINCPLUSPLUS '
configopts += '-DNETCDF_F77_ROOT=$EBROOTNETCDFMINFORTRAN '
configopts += '-DNETCDF_F90_ROOT=$EBROOTNETCDFMINFORTRAN '
# --- ParaView Plugins --- #
# --- ParaView Plugin Autoload --- #
# configopts += '-DPARAVIEW_AUTOLOAD_PLUGIN_AnalyzeNIfTIIO=ON '
# configopts += '-DPARAVIEW_AUTOLOAD_PLUGIN_SurfaceLIC=ON ' # can result in error
# ( 489.245s) [paraview ]vtkOpenGLVertexArrayObj:293 ERR| vtkOpenGLVertexArrayObject (0x3cd7bc0)
# ( 489.245s) [paraview ]vtkOpenGLRenderUtilitie:78 WARN| Error setting 'vertexMC' in shader VAO.
# https://www.paraview.org/pipermail/paraview/2016-March/036518.html
# --- infos
# -- Plugin: AcceleratedAlgorithms - Testing plugin : Enabled
# -- Plugin: AdiosReader - Reader for *.bp files based on Adios : Disabled
# -- Plugin: AdiosStagingReader - Performs staging reads from simulations using ADIOS : Disabled
# -- Plugin: AnalyzeNIfTIIO - Reader/Writer for Analyze and NifTI files : Enabled
# -- Plugin: ArrowGlyph - Glyph with customizable Arrows : Enabled
# -- Plugin: CDIReader - ICON netCDF/CDI Reader : Enabled
# -- Plugin: DigitalRockPhysics - Digital Rock Physics analysis filters : Enabled
# -- Plugin: EmbossingRepresentations - Embossing representations : Enabled
# -- Plugin: EyeDomeLighting - Add 3D View with eye-dome Lighting support : Enabled
# -- Plugin: GMVReader - Reader for binary or ASCII files stored in General Mesh Viewer file format : Enabled
# -- Plugin: GenericIOReader - GenericIO Reader for HACC data : Enabled
# -- Plugin: GeodesicMeasurement - Geodesic Measurement : Enabled
# -- Plugin: GmshReader - Reader for visualization of high-order polynomial solutions under the Gmsh format : off
# -- Plugin: InSituExodus - Experimental memory-conserving Exodus II file reader. : Disabled
# -- Plugin: LagrangianParticleTracker - Highly customizable filter for particle tracking : Enabled
# -- Plugin: MooseXfemClip - Clip partial elements generated by MOOSE XFEM : Enabled
# -- Plugin: Moments - Filters for Flux and Circulation Fields : Enabled
# -- Plugin: NetCDFTimeAnnotationPlugin - Provides NetCDF Time Annotation filter : Enabled
# netcdftime Python module not found! NetCDFTimeAnnotationPlugin not be available until it is installed.
# -- Plugin 'NetCDFTimeAnnotationPlugin' lists plugin library named 'NetCDFTimeAnnotationPlugin'
# -- Plugin: NonOrthogonalSource - Non Orthogonal Source code sample : Enabled
# -- Plugin: OpenVR - OpenVR Support : Disabled
# -- Plugin: PythonQtPlugin - PythonQt Plugin : Disabled
# -- Plugin: SLACTools - SLAC Tools : Enabled
# -- Plugin: SierraPlotTools - Sierra Plotting Tools : Enabled
# -- Plugin: StreamLinesRepresentation - Add animated Stream Lines representation for any type of dataset : Enabled
# -- Plugin: StreamingParticles - Render Particles with Streaming : Enabled
# -- Plugin: SurfaceLIC - Add Surface-LIC vector visualization support : Enabled
# -- Plugin: TemporalParallelismScriptGenerator - Plugin for creating Python spatio-temporal processing scripts : off
# -- Plugin: PacMan - Testing plugin : Enabled
# -- Plugin: ThickenLayeredCells - Filter to thicken layered cells : Enabled
# -- Plugin: VRPlugin - Virtual Reality Devices and Interactor styles : Disabled
# -- Plugin: VTKmFilters - VTKm many-core filters : Enabled
# -- Plugin: VaporPlugin - Plugin to read NCAR VDR files : Disabled
# -- Plugin: pvNVIDIAIndeX - Plugin for NVIDIA IndeX : Enabled
# #########################################################
# The ParaView server can be cranky, test downloads are quite often failing
# Using ; insted of && gives a second chance to download the test files, if the first serial attempt would fail.
# prebuildopts = 'make VTKData ;' # only if: configopts += '-DBUILD_TESTING=ON'
postinstallcmds = ['python -m compileall %(installdir)s/lib64/python3.6/site-packages/']
# 'cp -a %(builddir)s/ParaView-v%(version)s/ %(installdir)s/src', # copy source from build dir to install dir
# '', # move debug info to separate files:
# http://stackoverflow.com/questions/866721/how-to-generate-gcc-debug-symbol-outside-the-build-target
# '', # debugedit -i --base-dir=%(builddir)s/ParaView-v%(version)s --dest-dir= %(installdir)s/src <file.debug>
# # change path to source in debug info
modextravars = {'CUDA_VISIBLE_DEVICES': '0,1'}
# OpenSWR fully supports OpenGL 3.0 and most of 3.3, but ParaView requires 3.2 -> clame to fully support 3.2
modextravars = {'MESA_GL_VERSION_OVERRIDE': '3.2'}
# modextravars = {'MESA_GLSL_VERSION_OVERRIDE': '??'}
modextravars = {
# OpenMP will choose an optimum number of threads by default, which is usually the number of cores
# 'OMP_NUM_THREADS': '28', # fix number of threads used by paraview filters and parallel sections in the code
# threads used by ospray - details https://github.com/ospray/ospray/blob/release-2.0.x/ospray/api/Device.cpp#L88
# unset => OSPRAY uses all hardware threads
# 'OSPRAY_THREADS': '14', # OSPRay < 2.0
# 'OSPRAY_NUM_THREADS': '14', # OSPRay >= 2.0
# When TBB is used for OSPRAY: tbb::task_scheduler_init::default_num_threads() is default if no OSPRAY_NUM_THREADS
# https://github.com/ospray/ospcommon/blob/master/ospcommon/tasking/detail/tasking_system_init.cpp#L47
# https://www.threadingbuildingblocks.org/docs/doxygen/a00150.html
# more ospray definitions: https://www.ospray.org/documentation.html#environment-variables
'KNOB_MAX_WORKER_THREADS': '65535', # max. threads used by OpenSWR (limited by number of hardware threads)
# details in https://gitlab.version.fz-juelich.de/vis/vis-software/issues/14
# more knob defs: https://github.com/mesa3d/mesa/blob/master/src/gallium/docs/source/drivers/openswr/knobs.rst
}
modextrapaths = {'PYTHONPATH': 'lib64/python%(pyshortver)s/site-packages'}
moduleclass = 'vis'
diff -Naur ParaView-v5.7.0/Wrapping/Python/paraview/simple.py ParaView-v5.7.0-changed/Wrapping/Python/paraview/simple.py
--- ParaView-v5.7.0.orig/Wrapping/Python/paraview/simple.py 2019-09-26 23:10:51.000000000 +0200
+++ ParaView-v5.7.0/Wrapping/Python/paraview/simple.py 2020-03-04 18:01:36.043382025 +0100
@@ -47,6 +47,9 @@
import sys
import warnings
+from threading import Thread
+from time import sleep, time
+
if sys.version_info >= (3,):
xrange = range
@@ -2443,6 +2446,266 @@
view = property(get_view, set_view)
source = property(get_source, set_source)
+
+class CatalystConnection:
+
+ _EventChecker = None
+ _version = "0.4.0"
+
+ def vtkObserver(self, EventObject, EventType):
+ #print(EventType)
+ if EventType is None:
+ return None
+ if EventType == "UpdateEvent": # called for new insitu data
+ for i in range(len(self.updatefunctions)):
+ self.updatefunctions[i]()
+ return True
+ if EventType == "ConnectionCreatedEvent": # called when Connection is established
+ self._connected = True
+ return True
+ if EventType == "ConnectionClosedEvent": # called when Connection is closed
+ self._connected = False
+ self._isPaused = False
+ return True
+ if EventType == "UpdatePropertyEvent":
+ return True
+ if EventType == "PropertyModifiedEvent":
+ return True
+ if EventType == "ModifiedEvent":
+ return True
+ servermanager.vtk.vtkLogger.Log(servermanager.vtk.vtkLogger.VERBOSITY_WARNING, __file__, 31, "Unknown Event Type in catalyst connection: " + EventType)
+ return False
+
+
+ def __init__(self,):
+ self.updatefunctions = []
+ self._connected = False
+ self._session = None
+ self._delay = 0.01
+
+ servermanager.vtkProcessModule.GetProcessModule().MultipleSessionsSupportOn()
+
+ if not CatalystConnection._EventChecker:
+ _EventChecker = CatalystConnection.__EventChecker(self._delay)
+ _EventChecker.StartRegularChecks()
+
+
+ def Start(self, port = 22222):
+ """
+ Open Catalyst port, so the simulation can connect
+ """
+ if self.IsConnected():
+ return False;
+
+ activeConnection = servermanager.ActiveConnection
+
+ self._InProxy = servermanager.CreateProxy("coprocessing","LiveInsituLink")
+ adaptor = self._InProxy.SafeDownCast(self._InProxy)
+
+ adaptor.AddObserver(servermanager.vtk.vtkCommand.AnyEvent, self.vtkObserver)
+
+ servermanager.vtkSMPropertyHelper(adaptor, "InsituPort").Set(port)
+ servermanager.vtkSMPropertyHelper(adaptor, "ProcessType").Set("Visualization")
+
+ adaptor.UpdateVTKObjects()
+
+ self._session = adaptor.GetSession()
+ self._connection = servermanager.GetConnectionFromId(self._session.ConnectToCatalyst())
+ self._isPaused = False
+
+ self._InProxy.SetInsituProxyManager(self._connection.Session.GetSessionProxyManager())
+
+ adaptor.InvokeCommand("Initialize")
+
+ servermanager.SetActiveConnection(activeConnection)
+
+
+
+ def IsConnected(self):
+ """
+ True if the simulation is connected, false if the simulation is not yet connected, or disconnected
+ """
+ return self._connected
+
+ def IsPaused(self):
+ """
+ True if the simulation is Paused, false if the simulation is running, or there is not connection to a simulation
+ """
+ return self._isPaused
+
+ def BlockTillConnected(self, timeout = 0):
+ """
+ block till connection is established by simulation, or the timeout in seconds is eclipsed, default is 0, therefore without timeout
+ """
+ start = time()
+ while (time() - start < timeout) or timeout == 0:
+ sleep(self._delay)
+ if self.IsConnected():
+ return True
+ return False;
+
+ def BlockTillNextUpdate(self, timeout = 0):
+ """
+ block till next update happend by simulation, or the timeout in seconds is eclipsed, default is 0, therefore without timeout
+ """
+ start = time()
+ oldUpdates = self.GetTimeStep()
+ while (time() - start < timeout) or timeout == 0:
+ sleep(self._delay)
+ if oldUpdates < self.GetTimeStep():
+ return True
+ return False;
+
+ def BlockTillTimeStepAndPause(self, TimeStep, timeout = 0):
+ """
+ block till time step is reached and then pause the simulation, or the timeout in seconds is eclipsed, default is 0, therefore without timeout.
+ """
+ start = time()
+ while (time() - start < timeout) or timeout == 0:
+ sleep(self._delay)
+ if TimeStep -1 <= self.GetTimeStep(): # needs to step to pause the simulation, therefore activate pause one step early
+ self.SetPauseSimulation(True)
+ return True
+ return False;
+
+
+ def OutputAvaiable(self, ChannelInformation = ['input', 0]):
+ """
+ Check if this combination of ChannelName and port is avaible in simulation data
+ """
+ if self.IsConnected() == False:
+ return False
+ return self.GetCatalystSources().count(ChannelInformation) == 1
+
+
+ def GetCatalystSources(self):
+ """
+ List all avaiable combinations of data output the simulation offers
+ """
+ if self.IsConnected() == False:
+ return None
+ collection = servermanager.vtk.vtkCollection()
+ self._InProxy.GetInsituProxyManager().GetProxies("sources", collection)
+ Channels = []
+ for i in range(collection.GetNumberOfItems()):
+ proxy = collection.GetItemAsObject(i)
+ if proxy.GetVTKClassName() == "vtkPVTrivialProducer":
+ for j in range(proxy.GetNumberOfOutputPorts()):
+ Channels.append([proxy.GetLogName(), j])
+ return Channels
+
+
+ def Extract(self, extractName, ChannelInformation = ['input', 0]):
+ """
+ Extract sources from the catalyst connection into the normal pipeline, so it can be used.
+ Returns the Source Object, named extractName. On error returns None.
+ """
+ if self.IsConnected() == False:
+ servermanager.vtk.vtkLogger.Log(servermanager.vtk.vtkLogger.VERBOSITY_WARN, __file__, 144, "Catalyst simulation is not yet connected")
+ return None
+ if self.OutputAvaiable(ChannelInformation) == False:
+ servermanager.vtk.vtkLogger.Log(servermanager.vtk.vtkLogger.VERBOSITY_WARN, __file__, 147, "No output for this channelInformation avaiable: " + str(ChannelInformation))
+ return None
+ if FindSource(extractName) is not None:
+ servermanager.vtk.vtkLogger.Log(servermanager.vtk.vtkLogger.VERBOSITY_WARN, __file__, 150, "There is already a source named " + extractName)
+ return None
+ self.EProxy = self._InProxy.CreateExtract("sources", ChannelInformation[0], ChannelInformation[1])
+ servermanager.ActiveConnection.Session.GetSessionProxyManager().RegisterProxy("sources", extractName, self.EProxy)
+
+ return FindSource(extractName)
+
+ def GetTimeStep(self):
+ """
+ Returns the timeStep of the visible data
+ """
+ return self._InProxy.GetTimeStep()
+
+ def SetPauseSimulation(self, pause):
+ """
+ Allows to pause and unpause the simulation
+ """
+ if self.IsConnected() == False:
+ return
+ if self._isPaused == bool(pause):
+ return
+ self._isPaused = bool(pause)
+ servermanager.vtkSMPropertyHelper(self._InProxy, "SimulationPaused").Set(self._isPaused)
+ self._InProxy.UpdateVTKObjects()
+ if not self._isPaused:
+ self._InProxy.InvokeCommand("LiveChanged")
+
+ def SetLoopDelay(self, delay):
+ self._delay = delay
+ _EventChecker.TimerDelay = delay
+
+ def AddUpdateFunction(self, func):
+ """
+ Add a function that will be called, when the catalyst data is updated.
+ This function will be called without any arguments.
+ """
+ self.updatefunctions.append(func)
+
+ def LengthUpdateFunctions(self):
+ """
+ Number of functions that will be called, when the catalyst data is updated.
+ """
+ return len(self.updatefunctions)
+
+ def RemoveUpdateFunction(self, func):
+ """
+ Remove a function that would be called, when the catalyst data is updated.
+ """
+ return self.updatefunctions.remove(func)
+
+ def ClearUpdateFunctions(self):
+ """
+ Remove all functions that would be called, when the catalyst data is updated.
+ """
+ self.updatefunctions = []
+
+
+
+
+ class __EventChecker:
+ def __init__(self, delay = 0.01):
+ self.TimerDelay = delay # Delay between calls to check nam for new events
+ self._Running = False
+ self._session = servermanager.ProxyManager().GetSession()
+ self._nam = servermanager.vtkProcessModule.GetProcessModule().GetNetworkAccessManager()
+
+ def CheckForUpdates(self):
+ """
+ Calls processEvents(), till all events are processed
+ """
+ if self._session is None:
+ return
+ if isinstance(self._session, servermanager.vtkSMSessionClient):
+ if not self._session.IsNotBusy():
+ return
+ while self._nam.ProcessEvents(1):
+ temp = self._nam.ProcessEvents(1)
+
+ def _RegularChecks(self):
+ """
+ starts an infinte loop, regularily calling CheckForUpdates(), needs a valid value set for self.timerDelay
+ """
+ if self._Running:
+ return False
+ self._Running = True
+ self._doRegularChecks = True
+ while self._doRegularChecks:
+ sleep(self.TimerDelay)
+ self.CheckForUpdates()
+ self._Running = False
+
+ def StartRegularChecks(self):
+ """
+ Starts a seperate thread to do regular checks in the background
+ """
+ thread = Thread(target=self._RegularChecks, args=())
+ thread.daemon=True
+ thread.start()
+
# -----------------------------------------------------------------------------
class _funcs_internals:
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment