VisIt/3.4.1-cpeGNU-24.03 (VisIt-3.4.1-cpeGNU-24.03.eb)
Install with the EasyBuild-user module:
To access module help after installation and get reminded for which stacks and partitions the module is installed, usemodule spider VisIt/3.4.1-cpeGNU-24.03
.
EasyConfig:
easyblock = 'CMakeMake'
local_VisIt_version = '3.4.1' # https://github.com/visit-dav/visit/releases
local_FFmpeg_version = '6.1.1' # https://ffmpeg.org/download.html#releases
local_zlib_version = '1.3.1' # https://zlib.net/
local_Qt5_version = '5.15.15' # https://download.qt.io/official_releases/qt/
local_VTK_version = '9.2.6' # https://vtk.org/download/
local_Qwt_version = '6.3.0' # https://sourceforge.net/projects/qwt/files/qwt/
local_Silo_version = '4.11.1' # https://github.com/LLNL/Silo/releases
local_ADIOS2_version = '2.10.1' # https://github.com/ornladios/ADIOS2/releases
name = 'VisIt'
version = local_VisIt_version
homepage = 'https://github.com/visit-dav/visit'
whatis = ['Description: VisIt is an interactive, scalable, visualization, animation and analysis tool.']
description = """
VisIt is an Open Source, interactive, scalable, visualization, animation
and analysis tool. From Unix, Windows or Mac workstations, users can
interactively visualize and analyze data ranging in scale from small
(<101 core) desktop-sized projects to large (>105 core) leadership-class
computing facility simulation campaigns. Users can quickly generate
visualizations, animate them through time, manipulate them with a
variety of operators and mathematical expressions, and save the
resulting images and animations for presentations. VisIt contains a rich
set of visualization features to enable users to view a wide variety of
data including scalar and vector fields defined on two- and
three-dimensional (2D and 3D) structured, adaptive and unstructured
meshes. Owing to its customizeable plugin design, VisIt is capabable of
visualizing data from over 120 different scientific data formats.
"""
toolchain = {'name': 'cpeGNU', 'version': '24.03'}
source_urls = ['https://github.com/visit-dav/visit/releases/download/v%(version)s/']
sources = ['%(namelower)s%(version)s.tar.gz']
patches = [
'VisIt-3.4.1_parallel-hdf5.patch',
]
checksums = [
'942108cb294f4c9584a1628225b0be39c114c7e9e01805fb335d9c0b507689f5',
'90e47425b6d33baee23c10191c5cb0ccc760ca2f7467a81040c7ee035568644b', # VisIt-3.4.1_parallel-hdf5.patch
]
builddependencies = [
('buildtools', '%(toolchain_version)s', '', True),
('craype-accel-host', EXTERNAL_MODULE),
]
dependencies = [
('cray-hdf5-parallel', EXTERNAL_MODULE),
('cray-python', EXTERNAL_MODULE),
('X11', '%(toolchain_version)s'),
('OpenGL', '%(toolchain_version)s'),
('zlib', local_zlib_version),
('Qt5', local_Qt5_version),
('Qwt', local_Qwt_version),
('VTK', local_VTK_version),
('FFmpeg', local_FFmpeg_version),
('Silo', local_Silo_version),
('ADIOS2', local_ADIOS2_version, '-hdf5-parallel'),
]
local_extra_flags = '-DH5_USE_18_API'
preconfigopts = 'module unload rocm cray-libsci && '
prebuildopts = preconfigopts
preinstallopts = preconfigopts
preconfigopts += 'export CFLAGS="$CFLAGS %s" && ' % local_extra_flags
preconfigopts += 'export CXXFLAGS="$CXXFLAGS %s" && ' % local_extra_flags
configopts = ' '.join([
'-D VISIT_RPATH_RELATIVE_TO_EXECUTABLE_PATH=ON',
'-D VISIT_ZLIB_DIR=$EBROOTZLIB',
'-D VISIT_VTK_DIR=$EBROOTVTK',
'-D VISIT_VTK_VERSION=$EBVERSIONVTK',
'-D VISIT_QWT_DIR=$EBROOTQWT',
'-D VISIT_QT_VERSION=$EBVERSIONQT5',
'-D VISIT_QT_DIR=$EBROOTQT5',
'-D VISIT_OSMESA_DIR=$EBROOTMESA',
'-D VISIT_MESAGL_DIR=$EBROOTLIBGLVND',
'-D VISIT_SILO_DIR=$EBROOTSILO',
'-D VISIT_ADIOS2_DIR=$EBROOTADIOS2',
'-D HDF5_DIR=$CRAY_HDF5_PARALLEL_PREFIX',
'-D VISIT_HDF5_MPI_DIR=$CRAY_HDF5_PARALLEL_PREFIX',
'-D PYTHON_DIR=$CRAY_PYTHON_PREFIX',
'-D VISIT_PYTHON_FILTERS=ON',
'-D VISIT_PYTHON_SCRIPTING=ON',
'-D VISIT_PARALLEL=ON',
'-D VISIT_MPI_COMPILER=$CC',
'-D VISIT_MPI_COMPILER_CXX=$CXX',
'-D OpenGL_GL_PREFERENCE=GLVND',
'-D HAVE_OSMESA=OFF',
])
prebuildopts = "sed -i '23 a #include <cmath>' %(builddir)s/%(namelower)s%(version)s/src/gui/QvisStripChart.C && "
# for remote launch otherwise module is not loaded
# and dependencies missing
local_postinstall_script = """
cd %(installdir)s/%(version)s/linux-x86_64/bin
cat >wrapper<<EOF
#!/bin/bash
if [[ ! ":\$LOADEDMODULES:" =~ ":%(name)s/%(version)s-%(toolchain_name)s-%(toolchain_version)s:" ]]
then
module load LUMI/%(toolchain_version)s
module load %(name)s/%(version)s-%(toolchain_name)s-%(toolchain_version)s
fi
exec "\${0}_real" "\$@"
EOF
chmod +x ./wrapper
for bin in $(find . -type f -exec file {} + | \
grep "dynamically linked" | \
cut -d: -f1)
do
mv ${bin} ${bin}_real
ln -s wrapper ${bin}
done
rm -f 2to3; ln -s $CRAY_PYTHON_PREFIX/bin/2to3-%(pyshortver)s 2to3
rm -f python; ln -s $CRAY_PYTHON_PREFIX/bin/python3 python
rm -f python3-config; ln -s $CRAY_PYTHON_PREFIX/bin/python%(pyshortver)s-config python3-config
rm -f python3; ln -s $CRAY_PYTHON_PREFIX/bin/python%(pyshortver)s python3
"""
postinstallcmds = [
local_postinstall_script,
]
modextravars = {
'PYTHONPATH': '%(version)s/linux-x86_64/lib/site-packages'
}
sanity_check_paths = {
'files': ['bin/%s' % x for x in ['frontendlauncher', 'frontendlauncher.py', 'visit']],
'dirs': ['%(version)s/bin'],
}
moduleclass = 'vis'