xiaoyeli / superlu_dist

Distributed memory, MPI based SuperLU
https://portal.nersc.gov/project/sparse/superlu/
Other
188 stars 65 forks source link

Unable to make #171

Open ThershiSeebaruth opened 2 months ago

ThershiSeebaruth commented 2 months ago

Dear all, I am trying to build superlu for Gkeyll (https://gkeyll.readthedocs.io/en/latest/) however I am having some troubles:

First of all, this is how I do the cmake config:

cmake config

cmake .. -DCMAKE_C_COMPILER=$MPICC -DCMAKE_CXX_COMPILER=$MPICXX -DCMAKE_Fortran_COMPILER=mpif90 -DTPL_ENABLE_INTERNAL_BLASLIB=ON -DTPL_BLAS_LIBRARIES="$HOME/local/lib/libopenblas.so;$HOME/tseebaruth/dependencies/OpenBLAS/libopenblas.a" -DUSE_XSDK_DEFAULTS=TRUE -DTPL_PARMETIS_INCLUDE_DIRS="$HOME/local/include" -DTPL_PARMETIS_LIBRARIES="$HOME/local/lib/libparmetis.so;$HOME/local/lib/libmetis.so;$HOME/local/lib/libmetis.a" -DTPL_ENABLE_LAPACKLIB=ON -DTPL_LAPACK_LIBRARIES="$HOME/local/lib64/liblapack.a" -DCMAKE_C_FLAGS="-g -O3 -fPIC" -DCMAKE_CXX_FLAGS="-std=c++11 -O3 -fPIC" -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="$HOME/local" -DXSDK_ENABLE_Fortran=OFF -DCMAKE_EXE_LINKER_FLAGS="-L/backlnec/oldobs/roy/Tools/src/build-gcc-5.3-global/x86_64-unknown-linux-gnu/libgfortran/.libs -lgfortran -lquadmath" -DCMAKE_BUILD_TYPE=Release

during the build, however I get: -- Did not find or specify BLAS, so configure to build internal CBLAS ...

I am not sure if this may be the problem, but if I do make I get:

[ 76%] Building C object SRC/CMakeFiles/superlu_dist-static.dir/complex16/zpivot_batch.c.o
/obs/tseebaruth/dependencies/superlu_dist/SRC/complex16/ztrfAux.c: In function 'zinitTrf3DpartitionLUstructgrid0':
/obs/tseebaruth/dependencies/superlu_dist/SRC/complex16/ztrfAux.c:720:73: warning: trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]
  720 |                         gemmCsizes[offset] = SUPERLU_MAX(ldts[offset], ???);
      |                                                                          
/obs/tseebaruth/dependencies/superlu_dist/SRC/complex16/ztrfAux.c: In function 'zinitTrf3Dpartition_allgrid':
/obs/tseebaruth/dependencies/superlu_dist/SRC/complex16/ztrfAux.c:904:73: warning: trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]
  904 |                         gemmCsizes[offset] = SUPERLU_MAX(ldts[offset], ???);
      |                                                                          
/obs/tseebaruth/dependencies/superlu_dist/SRC/complex16/ztrfAux.c: At top level:
/obs/tseebaruth/dependencies/superlu_dist/SRC/complex16/ztrfAux.c:1089:73: warning: trigraph ??) ignored, use -trigraphs to enable [-Wtrigraphs]
 1089 |                         gemmCsizes[offset] = SUPERLU_MAX(ldts[offset], ???);
      |                                                                          
make[1]: *** [SRC/CMakeFiles/superlu_dist.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 77%] Linking C static library libsuperlu_dist.a
[ 77%] Built target superlu_dist-static
make: *** [all] Error 2

And I am not sure how to proceed. Could you help me? Thank you.

xiaoyeli commented 2 months ago

Regarding BLAS, you need the use the following CMake definition: -DTPL_ENABLE_INTERNAL_BLASLIB=OFF (you are setting it to ON)

Regarding the other errors, those lines are commented out in the code via "#if 0" block, for example, line 720 in ztrfAux.c appears in this block:

if 0 /* GPU gemm buffers can only be set on GPU side, because here we only know

     the size of U data structure on CPU.  It is different on GPU */
                if ( mycol == kcol ) { /* processes owning L panel */

                }
                if ( myrow == krow )
                    gemmCsizes[offset] = SUPERLU_MAX(ldts[offset], ???);

endif

This piece of code should NOT be compiled. I don't know why the compiler gets there, but it only issues "warning".

There may be errors somewhere else. Can you send the entire output?