Commit 62dd27b5 authored by Jakub Klinkovský's avatar Jakub Klinkovský
Browse files

Refactored test for PETSc using the FindPETSc module

parent 81e08530
Loading
Loading
Loading
Loading
+0 −31
Original line number Diff line number Diff line
@@ -314,35 +314,6 @@ if( ${WITH_GMP} )
   endif()
endif()

####
# Test for PETSc
if( BUILD_MPI )
   FIND_PATH( PETSC_INCLUDE_DIR petsc.h
      /usr/include/petsc
      ${PETSC_DIR}/${PETSC_ARCH}/include
      ${PETSC_DIR}/include
      DOC "PETSC headers."
   )
   if( ${PETSC_INCLUDE_DIR} STREQUAL "PETSC_INCLUDE_DIR-NOTFOUND" )
      message( "PETSC not found." )
   else()
      message( "PETSC headers found -- ${PETSC_INCLUDE_DIR}" )
      FIND_LIBRARY(PETSC_LIBRARY petsc
                  ${PETSC_INCLUDE_DIR}/../lib
                  /usr/local/lib
                  /usr/lib)
      if( PETSC_LIBRARY )
         #string( REPLACE ";" " " MPI_LIBRARIES "${MPI_CXX_LIBRARIES}" )
         #set( PETSC_LIBRARY "${MPI_LIBRARIES} ${PETSC_LIBRARY}")
         message( "PETSC library found -- ${PETSC_LIBRARY}")
         #list( GET MPI_CXX_INCLUDE_PATH 0 MPI_CXX_PATH )
         #set(PETSC_CXX_FLAGS "-DHAVE_PETSC -I${PETSC_INCLUDE_DIR} -DHAVE_MPI -I${MPI_CXX_PATH}")
         set(PETSC_CXX_FLAGS -DHAVE_PETSC -I${PETSC_INCLUDE_DIR})
         set(PETSC_LINKER_FLAGS ${PETSC_LIBRARY})
      endif()
   endif()
endif()

# configure build paths
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib )
@@ -422,8 +393,6 @@ message( " CMAKE_SHARED_LINKER_FLAGS_RELEASE = ${CMAKE_SHARED_LINKER_FLAGS_REL
message( "   CUDA_NVCC_FLAGS = ${CUDA_NVCC_FLAGS}" )
message( "   CUDA_SAMPLES_FLAGS = ${CUDA_SAMPLES_FLAGS}" )
message( "   GMP_LIBRARIES = ${GMP_LIBRARIES}" )
message( "   PETSC_CXX_FLAGS = ${PETSC_CXX_FLAGS}" )
message( "   PETSC_LINKER_FLAGS = ${PETSC_LINKER_FLAGS}" )

if( MPI_CXX_FOUND AND ${WITH_MPI} )
   message( "   MPI_CXX_COMPILE_OPTIONS = ${MPI_CXX_COMPILE_OPTIONS}" )
+16 −2
Original line number Diff line number Diff line
@@ -8,18 +8,32 @@
#
#include( cmake/BuildCSR5.cmake )

# PETSc requires MPI
if( BUILD_MPI )
   find_package( PETSc COMPONENTS CXX )
endif()

if( PETSC_FOUND )
   message( "PETSC library found: ${PETSC_VERSION}")
   set( PETSC_CXX_FLAGS -DHAVE_PETSC ${PETSC_DEFINITIONS} )
   message( "   PETSC_INCLUDES  = ${PETSC_INCLUDES}" )
   message( "   PETSC_CXX_FLAGS = ${PETSC_CXX_FLAGS}" )
   message( "   PETSC_LIBRARIES = ${PETSC_LIBRARIES}" )
endif()

if( BUILD_CUDA )
   file( GLOB EXPLICIT_TEMPLATES spmv.templates/*.cu )
   cuda_include_directories( ${CXX_BENCHMARKS_INCLUDE_DIRS} )
   cuda_add_executable( tnl-benchmark-spmv tnl-benchmark-spmv.cu ${EXPLICIT_TEMPLATES} ReferenceFormats/LightSpMV-1.0/SpMV.cu ReferenceFormats/LightSpMV-1.0/SpMVCSR.cu
                        OPTIONS ${CXX_BENCHMARKS_FLAGS} ${PETSC_CXX_FLAGS} )
   target_link_libraries( tnl-benchmark-spmv ${CUDA_cusparse_LIBRARY} ${CUDA_cudadevrt_LIBRARY} ${PETSC_LINKER_FLAGS})
   target_link_libraries( tnl-benchmark-spmv ${CUDA_cusparse_LIBRARY} ${CUDA_cudadevrt_LIBRARY} )
else()
   file( GLOB EXPLICIT_TEMPLATES spmv.templates/*.cpp )
   add_executable( tnl-benchmark-spmv tnl-benchmark-spmv.cpp ${EXPLICIT_TEMPLATES} )
   target_compile_options( tnl-benchmark-spmv  PRIVATE ${CXX_BENCHMARKS_FLAGS} ${PETSC_CXX_FLAGS} )
   target_include_directories( tnl-benchmark-spmv PRIVATE ${CXX_BENCHMARKS_INCLUDE_DIRS} )
   target_link_libraries( tnl-benchmark-spmv ${PETSC_LINKER_FLAGS} )
endif()
set_property( TARGET tnl-benchmark-spmv APPEND PROPERTY INCLUDE_DIRECTORIES ${PETSC_INCLUDES} )
target_link_libraries( tnl-benchmark-spmv ${PETSC_LIBRARIES} )

install( TARGETS tnl-benchmark-spmv RUNTIME DESTINATION bin )