- Infos im HLRS Wiki sind nicht rechtsverbindlich und ohne Gewähr -
- Information contained in the HLRS Wiki is not legally binding and HLRS is not responsible for any damages that might result from its use -
Hawk PrePostProcessing: Difference between revisions
Line 107: | Line 107: | ||
On the Vulcan cluster we provide the pvconnect script to set up a ssh tunnel, launch a ParaView client and directly connect it to a pvserver running on Hawk. the script is alos usable from a local client, simply copy the code below into a local file and connect to a running pvserver [[Hawk_PrePostProcessing|as described above]]. | On the Vulcan cluster we provide the pvconnect script to set up a ssh tunnel, launch a ParaView client and directly connect it to a pvserver running on Hawk. the script is alos usable from a local client, simply copy the code below into a local file and connect to a running pvserver [[Hawk_PrePostProcessing|as described above]]. | ||
<pre> | |||
#!/bin/bash | |||
############################################################################### | |||
# pvconnect | |||
# -------------- | |||
# The script opens a ssh-tunnel to a given compute node via a mom node and | |||
# launches a paraview client with the correct -url option | |||
# | |||
# Developed by: | |||
# -------------- | |||
# Ralf Schneider <schneider@hlrs.de> | |||
# | |||
# Last edited by Ralf Schneider - 22 April 2015 | |||
# | |||
############################################################################### | |||
# | |||
usage() | |||
{ | |||
echo | |||
echo "USAGE: $0" | |||
echo " -pvs pvserver[:port] -via host" | |||
echo | |||
echo "-pvs = ParaView server to connect to. Either the hostname alone or " | |||
echo " hostname:port can be given. The hostname:port combination is" | |||
echo " normally returned the pvserver by the comment:" | |||
echo " Accepting connection(s): hostname:port" | |||
echo " if no port is given the default port 11111 is used" | |||
echo "-via = Hostname via which to connect to the server. If the server was" | |||
echo " launched by aprun this should be the name of the mom node" | |||
echo " on which the aprun was executed." | |||
echo | |||
exit $1 | |||
} | |||
# | |||
if [ $# -eq 0 ]; then | |||
usage 0 | |||
fi | |||
# | |||
module load tools/VirtualGL | |||
# | |||
port=`nettest -findport` | |||
# | |||
# ----------------------------------------------------------------------------- | |||
# Parse Arguments ------------------------------------------------------------- | |||
# | |||
while [ $# -gt 0 ] | |||
do | |||
case "$1" in | |||
-pvs*) acc_con=$2; shift ;; | |||
-via*) VIA=$2; shift ;; | |||
-help*) usage 0;; | |||
--help*) usage 0;; | |||
*) break ;; | |||
esac | |||
shift | |||
done | |||
# | |||
if [ -z $acc_con ]; then | |||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" | |||
echo "!! Argument for ParaView server is missing !!" | |||
echo "!! Please specify the -pvs option !!" | |||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" | |||
exit 1 | |||
fi | |||
# | |||
if [ -z $VIA ]; then | |||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" | |||
echo "!! Found no host to connect through in arguments !!" | |||
echo "!! Please specify the -via option !!" | |||
echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" | |||
exit 1 | |||
fi | |||
# | |||
# ----------------------------------------------------------------------------- | |||
# Get target and port --------------------------------------------------------- | |||
# | |||
# | |||
TARGET=`echo $acc_con | cut -d: -f1` | |||
PVP=`echo $acc_con | cut -d: -f2` | |||
# | |||
if [ -z $PVP ]; then | |||
PVP=11111 | |||
echo " " | |||
echo " Found no ParaView server port in arguments" | |||
echo " Using the default one: 11111" | |||
fi | |||
# | |||
# ----------------------------------------------------------------------------- | |||
# Open tunnel ----------------------------------------------------------------- | |||
# | |||
ssh -N -L $port:$TARGET:$PVP $VIA & | |||
sshpid=$! | |||
# | |||
sleep 10 | |||
# | |||
echo " " | |||
echo " Opened ssh-tunnel with process id : ${sshpid}" | |||
echo " Tunnel command was : ssh -N -L $port:$TARGET:$PVP $VIA &" | |||
# | |||
# ----------------------------------------------------------------------------- | |||
# Launch paraview client ------------------------------------------------------ | |||
# | |||
echo " " | |||
echo " Launching paraview client : vglrun paraview -url=cs://localhost:$port" | |||
vglrun paraview -url=cs://localhost:$port | |||
# | |||
kill ${sshpid} | |||
# | |||
</pre> |
Revision as of 10:23, 28 May 2021
For pre- and post-processing purposes with large memory requirements multi user smp nodes are available. These nodes are reachable via the smp queue. Please see the node types, examples and smp sections of the batch system documentation.
Remote Visualization
Since Hawk is not equipped with Graphic Hardware, remote visualization has either to be executed via the Vulcan cluster or via locally installed clients.
Paraview
ParaView is installed on Hawk with mpi support for parallel execution and rendering on the compute nodes. The installation is available via the module environment.
module load paraview/server[/<version>]
To enable parallel data processing and rendering on the CPU Paraview is installed with the mesa llvm gallium pipe. This means the Qt based graphical user interface (GUI) i.e. the paraview
command and with that the ParaView client is not available. Scripted usage is possible via pvbatch
. For interactive parallel post-processing and visualization pvserver
has to be used.
Client-Server Execution using the Vulcan Cluster
Graphical ParaView clients matching the server versions on Hawk are installed on the Vulcan cluster. For efficient connection we recommend to use the vis_via_vnc.sh
script available via the VirtualGL module on Vulcan.
Setting up the VNC desktop session
ssh vulcan.hww.hlrs.de module load tools/VirtualGL vis_via_vnc.sh
Please note that this will reserve a standard visualization node in Vulcan for one hour. Additional nodes with other graphic hardware are available and the reservation time can of course be increased. for a full list of options please use
vis_via_vnc.sh --help
To connect to the vnc session on the visualization node from your local client computer use one of the methodologies issued by the vis_via_vnc.sh script. The recommended way is to use a TigerVNC viewer or TurboVNC viewer with the -via
option.
vncviewer -via <user_name>@cl5fr2.hww.hlrs.de <node_name>:<display_number>
After successfull connection you should be logged in to a remote Xvnc desktop session.
Setting up pvserver
In parallel a regular compute node job has to be requested on Hawk. E.g.
qsub -l select:nodes=2:mpiprocs=128,walltime=01:00:00 -I
Once logged in to the interactive compute node job load the paraview/server module and launch pvserver
.
module load paraview/server[/<version>] mpirun -n 256 pvserver
If pvserver
was launched successfully it should issue the connection details for the paraview client. E.g.:
s32979 r41c2t6n4 203$ mpirun -n 256 pvserver Waiting for client... Connection URL: cs://r41c2t6n4:11111 Accepting connection(s): r41c2t6n4:11111
Connection of ParaView Client and Server via pvconnect
To connect a graphical ParaView client executed within the vnc session on Vulcan with the server running on the Hawk compute nodes a ssh tunnel has to be established. For convenience we provide in the client installation the pvconnect
script. The script takes two arguments.
-pvs
is the combination<servername>:<portnumber>
isseued during pvserver startup underAccepting connection(s):
.-via
is the hostname of the machine over which to tunnel onto the pv server host.
Usually this is hawk.hww.hlrs.de. So taking the example from the server startup given above, to launch a ParaView client within a VNC desktop session and directly connect it to a running server on Hawk compute nodes use:
module load tools/paraview pvconnect -pvs r41c2t6n4:11111 -via hawk.hww.hlrs.de
The connection and memory load on the server can be checked within the client by activating the Memory Inspector via the View
menu within the ParaView client.
Client-Server Execution using a local client
It is also possible to connect a locally running ParaView to a server running on Hawk. For that we recommend to compile a matching ParaView client on your local machine. So either check out the correct ParaView sources version from the ParaView git repositories or download the source tar archive we provide in the ParaView intallation directory on Hawk. With the ParaView module loaded the sources can be found in
$PARAVIEW_ROOT/../src
On your local machine, extract the archive, define your installation location
export PV_PREFIX=<path_to_installation_directory>
Setup your build directory
cd ParaView/ export PV_VERSION=`git describe --tags` echo $PV_VERSION cd .. mkdir ParaView_${PV_VERSION}_build_client cd ParaView_${PV_VERSION}_build_client
Configure the ParaView installation process with cmake
cmake ../ParaView \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_COMPILER=c++ \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_Fortran_COMPILER=gfortran \ -DPARAVIEW_USE_PYTHON=ON \ -DPARAVIEW_INSTALL_DEVELOPMENT_FILES=ON \ -DPARAVIEW_BUILD_SHARED_LIBS=ON \ -DBUILD_TESTING=OFF \ -DCMAKE_INSTALL_PREFIX=$PV_PREFIX/paraview/${PV_VERSION}/client
Build and install with
make -j 20 make install
And finally extend your PATH and LD_LIBRARY_PATH environment variables:
export PATH=$PV_PREFIX/paraview/${PV_VERSION}/client/bin:$PATH export LD_LIBRARY_PATH=$PV_PREFIX/paraview/${PV_VERSION}/client/lib64:$LD_LIBRARY_PATH <pre> The newly installed client should now be executable. On the Vulcan cluster we provide the pvconnect script to set up a ssh tunnel, launch a ParaView client and directly connect it to a pvserver running on Hawk. the script is alos usable from a local client, simply copy the code below into a local file and connect to a running pvserver [[Hawk_PrePostProcessing|as described above]]. <pre> #!/bin/bash ############################################################################### # pvconnect # -------------- # The script opens a ssh-tunnel to a given compute node via a mom node and # launches a paraview client with the correct -url option # # Developed by: # -------------- # Ralf Schneider <schneider@hlrs.de> # # Last edited by Ralf Schneider - 22 April 2015 # ############################################################################### # usage() { echo echo "USAGE: $0" echo " -pvs pvserver[:port] -via host" echo echo "-pvs = ParaView server to connect to. Either the hostname alone or " echo " hostname:port can be given. The hostname:port combination is" echo " normally returned the pvserver by the comment:" echo " Accepting connection(s): hostname:port" echo " if no port is given the default port 11111 is used" echo "-via = Hostname via which to connect to the server. If the server was" echo " launched by aprun this should be the name of the mom node" echo " on which the aprun was executed." echo exit $1 } # if [ $# -eq 0 ]; then usage 0 fi # module load tools/VirtualGL # port=`nettest -findport` # # ----------------------------------------------------------------------------- # Parse Arguments ------------------------------------------------------------- # while [ $# -gt 0 ] do case "$1" in -pvs*) acc_con=$2; shift ;; -via*) VIA=$2; shift ;; -help*) usage 0;; --help*) usage 0;; *) break ;; esac shift done # if [ -z $acc_con ]; then echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!! Argument for ParaView server is missing !!" echo "!! Please specify the -pvs option !!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" exit 1 fi # if [ -z $VIA ]; then echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" echo "!! Found no host to connect through in arguments !!" echo "!! Please specify the -via option !!" echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" exit 1 fi # # ----------------------------------------------------------------------------- # Get target and port --------------------------------------------------------- # # TARGET=`echo $acc_con | cut -d: -f1` PVP=`echo $acc_con | cut -d: -f2` # if [ -z $PVP ]; then PVP=11111 echo " " echo " Found no ParaView server port in arguments" echo " Using the default one: 11111" fi # # ----------------------------------------------------------------------------- # Open tunnel ----------------------------------------------------------------- # ssh -N -L $port:$TARGET:$PVP $VIA & sshpid=$! # sleep 10 # echo " " echo " Opened ssh-tunnel with process id : ${sshpid}" echo " Tunnel command was : ssh -N -L $port:$TARGET:$PVP $VIA &" # # ----------------------------------------------------------------------------- # Launch paraview client ------------------------------------------------------ # echo " " echo " Launching paraview client : vglrun paraview -url=cs://localhost:$port" vglrun paraview -url=cs://localhost:$port # kill ${sshpid} #