Runs with Intel Compiler Catalyst Builds fail due to unresolved symbol related to infovis
@wascott @cory.quammen @utkarsh.ayachit
I am getting an error with catalyst after building with the intel compiler (17) but not when I build with the gcc compiler (gcc 7.6.2)
The error can most easily be found by (1) running python and (2) doing (with appropriate PYTHONPATH and LD_LIBRARY_PATH)
import paraview.simple
Which results in the following errors (from paraview/servermanager.py)
Error: Cannot import vtkPVServerManagerDefault Error: Cannot import vtkPVServerManagerRendering Error: Cannot import vtkPVAnimation
(and results in no errors on the gcc build)
Further digging, if you try instead
import vtkPVServerManagerDefaultPython (the corresponding .so file which vtkPVServerManagerDefault tries to import)
You get the error
ImportError: /projects/viz/catalyst/ParaView/pv-5.5.2-Mesa-sb/cee-intel-sparc/install/lib/libvtkIOInfovisPython27D-pv5.5.so.1: undefined symbol: PyVTKAddFile_vtkBiomTableReader
Which, grepping around for “Biom”, appears to come from somewhere in the infovis modules. I have infovis in the default off state in my paraview build.
If I do nm on libvtkIOInfovisPython27D-pv5.5.so.1 and look for undefined symbols I get (among others)
U PyVTKAddFile_vtkBiomTableReader
U PyVTKAddFile_vtkChacoGraphReader
U PyVTKAddFile_vtkDIMACSGraphReader
U PyVTKAddFile_vtkDIMACSGraphWriter
U PyVTKAddFile_vtkDelimitedTextReader
U PyVTKAddFile_vtkFixedWidthTextReader
U PyVTKAddFile_vtkISIReader
U PyVTKAddFile_vtkMultiNewickTreeReader
U PyVTKAddFile_vtkNewickTreeReader
U PyVTKAddFile_vtkNewickTreeWriter
U PyVTKAddFile_vtkPhyloXMLTreeReader
U PyVTKAddFile_vtkPhyloXMLTreeWriter
U PyVTKAddFile_vtkRISReader
U PyVTKAddFile_vtkTulipReader
U PyVTKAddFile_vtkXGMLReader
U PyVTKAddFile_vtkXMLTreeReader
Which seem to come from the infovis python wrapping (…/build/VTK/Wrapping/Python/vtkIOInfovisPythonInitImpl.cxx)
The same symbols are missing on the gcc build; it simply appears that the gcc linker/loader or gcc-built python is okay with importing undefined symbols and just assumes they won’t be used. Maybe.
I think the upshot is that there is something wrong with the build such that if infovis modules are off, they are still being wrapped, causing the undefined symbols.