conda-forge / vtk-feedstock

A conda-smithy repository for vtk.
BSD 3-Clause "New" or "Revised" License
13 stars 64 forks source link

Compiling VTK for POWER (ppc64le) PC #97

Closed FarrandTom closed 3 years ago

FarrandTom commented 4 years ago

Issue: Hi!

I would like to compile VTK with the Python wrapping for linux-ppc64le running RHEL 7.4. Specifically for an AC922, which contains an IBM POWER9 PC, and 4*V100 Nvidia GPUs.

The go to method of building our Python packages is using conda, and therefore ideally I would like to make use of the feedstock, alongside conda-build. I noticed that linux-ppc64le is marked as disabled on the Readme, and so would like to understand the reasons for that.

I know that VTK-m has been built successfully for the architecture, but I'm not sure that provides a Python wrapper.

Could anyone provide any direction/pointers on how to compile for linux-ppc64le?


Environment (conda list):

``` $ conda list ```


Details about conda and system ( conda info ):

``` $ conda info active environment : vtk_python active env location : /home/tom/anaconda3/envs/vtk_python shell level : 2 user config file : /home/tom/.condarc populated config files : /home/tom/.condarc conda version : 4.7.5 conda-build version : not installed python version : 3.7.2.final.0 virtual packages : __cuda=10.1 base environment : /home/tom/anaconda3 (writable) channel URLs : https://public.dhe.ibm.com/ibmdl/export/pub/software/server/ibm-ai/conda/linux-ppc64le https://public.dhe.ibm.com/ibmdl/export/pub/software/server/ibm-ai/conda/noarch https://conda.anaconda.org/conda-forge/linux-ppc64le https://conda.anaconda.org/conda-forge/noarch https://repo.anaconda.com/pkgs/main/linux-ppc64le https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/r/linux-ppc64le https://repo.anaconda.com/pkgs/r/noarch package cache : /home/tom/anaconda3/pkgs /home/tom/.conda/pkgs envs directories : /home/tom/anaconda3/envs /home/tom/.conda/envs platform : linux-ppc64le user-agent : conda/4.7.5 requests/2.22.0 CPython/3.7.2 Linux/3.10.0-957.10.1.el7.ppc64le rhel/7.6 glibc/2.17 UID:GID : 1001:1001 netrc file : None offline mode : False ```
robers97 commented 4 years ago

RHEL7.4? Recommend RHEL7.6alt...

I build this as part of a VisiT build (from LLNL). Here was the cmake script which should give you some ideas on the compiler, etc. This built, but I didn't do any production test with it.

For the openGL pieces, I'd make sure those were getting linked the target you're looking for. In my case, after looking at this again, I'd look closer to ensure the CUDA libs were being used.

more bv_run_cmake.sh

"/fomshare/opt/spack/opt/spack/linux-rhel7-ppc64le/cmake-3.10.0-424j3ej7kmkgtiqvkknvacbl7lbxh7b7/bin/cmake" -DCMAKE_BUILD_TYPE:STRING=Re lease -DCMAKE_INSTALL_PREFIX:PATH=/fomshare/home/robers/OpenGL/visIt/thirdparty_shared/3.0.2/vtk/8.1.0/linux-ppc64le_gcc-9.2 -DBUILD_SHARED_LIBS:BOOL=ON -DVTK_DEBUG_LEAKS:BOOL=false -DVTK_LEGACY_REMOVE:BOOL=true -DBUILD_TESTING:BOOL=false -DBUILD_DOCUMENTATION:BOOL=false -DCMAKE_C_COMPILER:STRING=gcc -D CMAKE_CXX_COMPILER:STRING=g++ -DCMAKE_C_FLAGS:STRING=" -O2" -DCMAKE_CXX_FLAGS:STRING=" -O2" -DCMAKE_EXE_LINKER_FLAGS:STRING= -DCMAKE_MODULE_LINKER_FLAGS :STRING= -DCMAKE_SHARED_LINKER_FLAGS:STRING= -DVTK_REPORT_OPENGL_ERRORS:BOOL=true -DVTK_ALL_NEW_OBJECT_FACTORY:BOOL=true -DVTK_Group_Imaging:BOOL=false -DVTK_Group_MPI:BOOL=false -DVTK_Group_Qt:BOOL=false -DVTK_Group_Rendering:BOOL=false -DVTK_Group_StandAlone:BOOL=false -DVTK_GroupTk:BOOL=false -DVTK Group_Views:BOOL=false -DVTK_Group_Web:BOOL=false -DModule_vtkCommonCore:BOOL=true -DModule_vtkFiltersFlowPaths:BOOL=true -DModule_vtkFiltersHybrid:BOOL =true -DModule_vtkFiltersModeling:BOOL=true -DModule_vtkGeovisCore:BOOL=true -DModule_vtkIOEnSight:BOOL=true -DModule_vtkIOGeometry:BOOL=true -DModule_v tkIOLegacy:BOOL=true -DModule_vtkIOPLY:BOOL=true -DModule_vtkIOXML:BOOL=true -DModule_vtkInteractionStyle:BOOL=true -DModule_vtkRenderingAnnotation:BOOL =true -DModule_vtkRenderingFreeType:BOOL=true -DModule_vtkRenderingOpenGL2:BOOL=true -DModule_vtklibxml2:BOOL=true -DModule_vtkGUISupportQtOpenGL:BOOL=t rue -DQT_QMAKE_EXECUTABLE:FILEPATH=/usr/lib64/qt5/bin/qmake -DVTK_QT_VERSION=5 -DCMAKE_PREFIX_PATH=/usr/lib64/qt5/lib/cmake -DVTK_WRAP_PYTHON:BOOL=true -DPYTHON_EXECUTABLE:FILEPATH=/fomshare/spack/opt/spack/linux-rhel7-power9le/gcc-9.2.0/python-2.7.14-o6dhp4gebwrkym2cofngovd7xtaypal6/bin/python2.7 -DPYT HON_EXTRA_LIBS:STRING=-lpthread -ldl -lutil -lm -DPYTHON_INCLUDE_DIR:PATH=/fomshare/spack/opt/spack/linux-rhel7-power9le/gcc-9.2.0/python-2.7.14-o6dhp4g ebwrkym2cofngovd7xtaypal6/include/python2.7 -DPYTHON_LIBRARY:FILEPATH=/fomshare/spack/opt/spack/linux-rhel7-power9le/gcc-9.2.0/python-2.7.14-o6dhp4gebwr kym2cofngovd7xtaypal6/lib/libpython2.7.so -DVTK_OPENGL_HAS_OSMESA:BOOL=ON -DOPENGL_INCLUDE_DIR:PATH=/fomshare/home/robers/OpenGL/visIt/thirdparty_shared /3.0.2/mesagl/17.2.8/linux-ppc64le_gcc-9.2/include -DOPENGL_gl_LIBRARY:PATH="/fomshare/home/robers/OpenGL/visIt/thirdparty_shared/3.0.2/mesagl/17.2.8/li nux-ppc64le_gcc-9.2/lib/libGL.so;/fomshare/home/robers/OpenGL/visIt/thirdparty_shared/3.0.2/llvm/5.0.0/linux-ppc64le_gcc-9.2/lib/libLLVM.so" -DOPENGL_gl u_LIBRARY:PATH=/fomshare/home/robers/OpenGL/visIt/thirdparty_shared/3.0.2/mesagl/17.2.8/linux-ppc64le_gcc-9.2/lib/libGLU.so -DOSMESA_LIBRARY:FILEPATH="/ fomshare/home/robers/OpenGL/visIt/thirdparty_shared/3.0.2/mesagl/17.2.8/linux-ppc64le_gcc-9.2/lib/libOSMesa.so;/fomshare/home/robers/OpenGL/visIt/thirdp arty_shared/3.0.2/llvm/5.0.0/linux-ppc64le_gcc-9.2/lib/libLLVM.so" -DOSMESA_INCLUDE_DIR:PATH=/fomshare/home/robers/OpenGL/visIt/thirdparty_shared/3.0.2/ mesagl/17.2.8/linux-ppc64le_gcc-9.2/include ../VTK-8.1.0

bdice commented 4 years ago

POWER (ppc64le) support would also be helpful for me. vtk is a dependency of mayavi, which is turn a dependency of another package I would like to use on ppc64le.