Skip to content

[VisIt] [package list]

VisIt/3.4.1-cpeGNU-24.03 (VisIt-3.4.1-cpeGNU-24.03.eb)

Install with the EasyBuild-user module:

eb VisIt-3.4.1-cpeGNU-24.03.eb -r
To access module help after installation and get reminded for which stacks and partitions the module is installed, use module 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'

[VisIt] [package list]