Skip to content

[ParaView] [package list]

ParaView/5.10.1-cpeGNU-22.08 (ParaView-5.10.1-cpeGNU-22.08.eb)

This software is archived in the LUMI-EasyBuild-contrib GitHub repository as easybuild/easyconfigs/__archive__/p/ParaView/ParaView-5.10.1-cpeGNU-22.08.eb. The corresponding module would be ParaView/5.10.1-cpeGNU-22.08.

easyblock = 'CMakeMake'

name = 'ParaView'
version = '5.10.1'

local_XZ_version     = '5.2.5'
local_Mesa_version   = '22.2.1'
local_zlib_version   = '1.2.12'
local_FFmpeg_version = '5.0.1'
local_Szip_version   = '2.1.1'

homepage = 'https://www.paraview.org'

whatis = ['Description: ParaView is a data analysis and visualization application']

description = """
 ParaView is an open-source, multi-platform data analysis and visualization 
 application. ParaView users can quickly build visualizations to analyze their 
 data using qualitative and quantitative techniques. The data exploration can be
 done interactively in 3D or programmatically using ParaView’s batch processing
 capabilities.

 ParaView was developed to analyze extremely large datasets using distributed
 memory computing resources. It can be run on supercomputers to analyze datasets
 of petascale size as well as on laptops for smaller data, has become an integral
 tool in many national laboratories, universities and industry, and has won
 several awards related to high performance computation.
"""

usage = """
This version of ParaView only contains the server and the files needed for 
development (including Python). You need to install a matching version of the
client on your local machine by downloading the binary installer:

 - Windows: https://www.paraview.org/download/?version=v%(version_major_minor)s
 - MacOS: https://www.paraview.org/download/?version=v%(version_major_minor)s&filter=macOS
 - Linux: https://www.paraview.org/download/?version=v%(version_major_minor)s&filter=Linux

Important: the server and client version should match

To run the server, create an allocation with salloc where you specify the time, 
the number of server processes you want to launch, the memory and th account 
(project) to charge.

 $ salloc --time=<time> --ntasks=<nprocesses> --mem=<mem> --partition=small --account=<account>

Once the allocation is granted, start the server with 

 $ module load LUMI/%(toolchain_version)s
 $ module load ParaView/%(version)s-%(toolchain_name)s-%(toolchain_version)s
 $ srun pvserver

Once the server has started, the node name and port should be printed in the 
standard output. 

To be able to connect to the server sunning on the compute node, we need to 
create a tunnel between the node and your local machine by running the following
command on your local machine:

 $ ssh -N -L <port>:nid<id>:<port> <username>@lumi.csc.fi

where you need to replace <port> with the value provided in the 
output of the pvserver command. You also need to replace <id> with the number of
the node where the ParaView server is running and <username> with your 
username.

For example, if the server has been started on node nid002528 and that
the server port is 11111, a user with username lumiuser, should run the 
following command to create the tunnel:

 $ ssh -N -L 11111:nid002528:11111 lumiuser@lumi.csc.fi

The next step is to start the client on your local machine and configure it to 
connect to the server. To do so, go to 

File > Connect... > Add Server

Give a name to the configuration, for example LUMI, use "Client / Server" for
Server Type and "localhost" for Host. For the port, use the one that was used
for the tunnel creation, i.e., the port provided by pvserver. Click on Configure
and on the next screen choose "Manual" for the Startup Type and click on Save.

Now, you can select the newly created configuration and click connect.
"""

docurls = ['https://docs.paraview.org/']
software_license_urls = [
    'https://gitlab.kitware.com/paraview/paraview/-/blob/v%(version)s/License_v1.2.txt'
]

toolchain = {'name': 'cpeGNU', 'version': '22.08'}
toolchainopts = {'pic': True, 'usempi': True}

local_download_suffix = 'download.php?submit=Download&version=v%(version_major_minor)s&type=source&os=all&downloadFile='

source_urls = ['https://www.paraview.org/paraview-downloads/%s' % local_download_suffix]
sources = ['%(name)s-v%(version)s.tar.gz']
patches = ['ParaView-5.10.1_fix_FFmpeg_5.x_API_change.patch']
checksums = [
    '59ca46a929a52d8abec107b72e19447cba3d8e64871b6fbc8e99b0f3b167db46',  # ParaView-v5.10.1.tar.gz
    'cfd0644d3fcf64d7b2cdce89718a4f13b493e8f25f520c386016098b8605332c',  # ParaView-5.10.1_fix_FFmpeg_5.x_API_change.patch
]

builddependencies = [
    ('buildtools', '%(toolchain_version)s', '', True),
]

dependencies = [
    ('cray-python', EXTERNAL_MODULE),
    ('cray-hdf5',   EXTERNAL_MODULE),
    ('cray-netcdf', EXTERNAL_MODULE),
    ('X11',         '%(toolchain_version)s'),
    ('XZ',          local_XZ_version),
    ('Mesa',        local_Mesa_version),
    ('zlib',        local_zlib_version),
    ('FFmpeg',      local_FFmpeg_version),
    ('Szip',        local_Szip_version),
]

configopts  = ' -DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON'
configopts += ' -DPARAVIEW_BUILD_SHARED_LIBS=ON'
configopts += ' -DPARAVIEW_USE_MPI=ON'
configopts += ' -DPARAVIEW_ENABLE_FFMPEG=ON'
configopts += ' -DPARAVIEW_USE_QT=OFF'

# Fix protobuf error
configopts += ' -DCMAKE_SHARED_LINKER_FLAGS=-lpthread'

configopts += ' -DVTK_USE_X=OFF'
configopts += ' -DVTK_OPENGL_HAS_OSMESA=ON'

configopts += ' -DOSMESA_INCLUDE_DIR=${EBROOTMESA}/include'
configopts += ' -DOSMESA_LIBRARY=${EBROOTMESA}/lib64/libOSMesa.%s' % SHLIB_EXT
configopts += ' -DOPENGL_INCLUDE_DIR=IGNORE '
configopts += ' -DOPENGL_xmesa_INCLUDE_DIR=IGNORE '
configopts += ' -DOPENGL_gl_LIBRARY=IGNORE '

configopts += ' -DPARAVIEW_USE_VTKM=OFF'

configopts += ' -DPARAVIEW_USE_PYTHON=ON'
configopts += ' -DPython3_ROOT_DIR=$EBROOTPYTHON'

sanity_check_paths = {
    'files': ['bin/pvserver', 'bin/pvpython'],
    'dirs': ['include/paraview-%(version_major_minor)s', 'lib/python%(pyshortver)s/site-packages'],
}

sanity_check_commands = ['python -c "import paraview"']

modextrapaths = {'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages'}

moduleclass = 'vis'

[ParaView] [package list]