Vistle - A Modular Data-Parallel Visualization System
vistle: very smooth and elegant, nicely put together (Urban Dictionary)
License
Vistle source code is licensed under the LGPL v2.1. See LICENSE.txt for details. This does not apply to the subdirectory lib/3rdparty.
Installation
Installing with Spack
Add the HLRS Vis Spack repository to your installation of Spack:
git clone https://github.com/hlrs-vis/spack-hlrs-vis
spack repo add spack-hlrs-vis
Then you can install Vistle with this command:
spack install vistle
macOS with Homebrew
Install most of Vistle’s dependencies by invoking brew bundle within Vistle’s root source directory. You can also install Vistle with
brew install hlrs-vis/tap/vistle
Installing From Source
Build Requirements
C++ compiler: support for C++14 (ISO/IEC 14882:2014) is required, known good compilers:
GCC (8-14)
Clang (Xcode 14, 15)
Microsoft Visual Studio 2022
CMake: at least 3.10, on Windows 3.15
MPI: Microsoft MPI, Open MPI, MPICH and MVAPICH2 has been used successfully.
Boost: At least 1.66.00 is required. Note:
in order to switch MPI implementations without requiring a recompilation of Boost, we compile Boost.MPI together with Vistle
Botan: Crypto and TLS for Modern C++ is used for verifying HMACs during connection establishment, version 2 or 3 should work
Python: for interpreting Vistle workflow scripts (.vsl), Python 3 should work.
COVISE/OpenCOVER: OpenCOVER or a version of COVISE including OpenCOVER compiled by you is necessary, get it from GitHub, needed for the COVER module and COVER plug-ins You can shorten the build process and cut down on dependencies by building only OpenCOVER. In addition you should set
COVISEDESTDIRto a location where compiled COVER plug-ins should go. Hints: - The COVISE repository contains further information on how to build dependencies on Linux (README-Building-deps-linux.txt) and Windows (README-Building-deps.txt).OpenSceneGraph: the version of OpenSceneGraph that was used for compiling OpenCOVER
Qt: The Qt 6 libraries
Qt6Core,Qt6WidgetsandQt6Guiare required by the graphical user interface, alternatively also Qt 5 can be used.
You can set the environment variable EXTERNLIBS to a directory where Vistle should search for 3rd party libraries. It will search in e.g. $EXTERNLIBS/boost, if CMake is looking for Boost.
Getting Vistle
Getting Vistle is as easy as
git clone --recursive https://github.com/vistle/vistle.git
If you need to update an existing working copy, then change to its directory and issue the following commands:
git submodule sync --recursive
git submodule update --init --recursive
Building Vistle
Create a subdirectory for building, change to it, and invoke CMake:
cmake ..
Then build with your build tool, e.g.:
make -j20
Invoking Vistle
Environment Set-Up
Vistle modules are run on clusters via MPI. You have to configure how they have to be spawned by providing a script named spawn_vistle.sh (or spawn_vistle.bat on Windows) somewhere in your PATH. It could be as simple as
#! /usr/bin/env bash
mpirun "$@"
But it also might require invoking your batch system. An example is provided in vistle/bin.
For COVER to find its plug-ins, you should add the directory from COVISEDESTDIR to COVISE_PATH.
Command Line Switches
Synopsis:
vistle [--batch|--gui|--tui] [scriptfile]
Options:
-b|--batch: do not start a user interface-g|--gui(default): start a graphical user interface on rank 0-t|--tui: start a command line user interface on rank 0
You can connect a user interface to a running Vistle session later on, e.g.:
vistle_gui localhost 31093
Source Code Organization
cmake: CMake modulescontrib/scripts: support scripts for building and running Vistlelib/3rdparty: 3rd party source codelib/vistle: Vistle libraries source codelib/vistle/util: support codelib/vistle/core: Vistle core data structureslib/vistle/userinterface: common library for user interfaceslib/vistle/net: library for Vistle network communicationlib/vistle/control: Python code for controlling a Vistle sessionlib/vistle/module: base class and support code for visualization algorithm moduleslib/vistle/renderer: base class and support code for render moduleslib/vistle/rhr: library for remote hybrid rendering servers and clients
app: Vistle applicationsapp/hub: Vistle session controllerapp/gui: graphical user interface
module: visualization algorithm modules and base librarymodule/general: modules useful to a wider audiencemodule/test: various debugging aidsmodule/render: renderer modules transforming geometry into pixelsmodule/render/DisCOVERay: a parallel remote hybrid rendering server based on Embree (CPU ray-casting)module/render/OsgRenderer: a parallel remote hybrid rendering server based on OpenSceneGraph (OpenGL)module/render/COVER: wrap OpenCOVER as a render modulemodule/render/COVER/plugin: plug-ins for OpenCOVER, e.g. for connecting to Vistlemodule/render/COVER/plugin/RhrClient: OpenCOVER remote hybrid rendering client plugin
Documentation
Some documentation on Vistle is posted to vistle.io.