visit-dav / visit

VisIt - Visualization and Data Analysis for Mesh-based Scientific Data
https://visit.llnl.gov
BSD 3-Clause "New" or "Revised" License
420 stars 109 forks source link

Building VisIt CLI without xcb #19651

Open ghweber opened 1 month ago

ghweber commented 1 month ago

Currently VisIt requires the Qt6 xcb backend/plugin/platform. Multiple HPC platforms (such as Perlmutter at NERSC) do not have all dependencies installed to build Qt6 with that support. While it is possible to install just the VisIt server components (VISIT_SERVER_COMPONENTS_ONLY:BOOL=ON) and launch VisIt from a remote workstation, it is desirable to be able to run the VisIt CLI directly on HPC platforms.

I did try to "hack" VisIt to compile it on Perlmutter with a Qt6 without xcb (see attached patch). Disabling some functions in src/winutil/WindowMetrics.C enabled me to compile VisIt on Perlmutter. I am also able to run the bin/visit -cli -nowin but haven't tested launching a compute engine, yet.

I am wondering what it would take to make the attached hack patch bit more general so that it could be possible to build VisIt on systems like Perlmutter at least with CLI support.

hack.patch

ghweber commented 1 month ago

I did an additional test. I can at least run a serial compute engine on the login node and render a Pseudocolor plot of hardyglobal of noise.silo with the resulting executable.

bin/visit -cli -nowin
Running: cli -dv -nowin
Running: viewer -dv -nowin -noint -host 127.0.0.1 -port 5600
>>> OpenDatabase("../data/silo_hdf5_test_data/noise.silo")
Running: mdserver -dv -host 127.0.0.1 -port 5600
Running: engine_ser -dv -host 127.0.0.1 -port 5600
1
>>> AddPlot("Pseudocolor", "hardyglobal")
1
>>> DrawPlots()
1
>>> SaveWindow()
VisIt: Message - Rendering window 1...
VisIt: Message - Saving window 1...
VisIt: Message - Saved visit0000.png
'visit0000.png'
>>> 
ghweber commented 1 month ago

Perhaps the solution would be to have a VISIT_OFFSCREEN_ONLY build option.