From 0c5966228872ace800c71bf8db1a64f670c89bc9 Mon Sep 17 00:00:00 2001 From: Andreas Naumann <andreas.naumann@tu-dresden.de> Date: Fri, 4 Mar 2011 17:07:50 +0000 Subject: [PATCH] zoltan and goto-blas for AMDiS module on deimos --- AMDiS/AMDiSConfig.cmake.in | 22 +++++++++++----------- AMDiS/AMDiSUse.cmake | 9 ++++++--- AMDiS/CMakeLists.txt | 22 +++++++++++++++++----- 3 files changed, 34 insertions(+), 19 deletions(-) diff --git a/AMDiS/AMDiSConfig.cmake.in b/AMDiS/AMDiSConfig.cmake.in index 83c5bdd8..693684ef 100644 --- a/AMDiS/AMDiSConfig.cmake.in +++ b/AMDiS/AMDiSConfig.cmake.in @@ -55,6 +55,7 @@ if(Boost_FOUND) endif(Boost_FOUND) set(AMDiS_NEED_PARMETIS @ENABLE_PARMETIS@) +set(AMDiS_NEED_ZOLTAN @ENABLE_ZOLTAN@) set(AMDiS_HAS_PARALLEL_DOMAIN @ENABLE_PARALLEL_DOMAIN@) set(AMDiS_NEED_UMFPACK @ENABLE_UMFPACK@) set(AMDiS_NEED_MKL @ENABLE_MKL@) @@ -62,18 +63,13 @@ set(AMDiS_USE_FILE ${AMDiS_DIR}/AMDiSUse.cmake) set(AMDiS_COMPILEFLAGS "@COMPILEFLAGS@") if(AMDiS_NEED_UMFPACK) - set(BLAS_LIBRARY_DIR "" CACHE PATH "the blas library directory") - if(NOT BLAS_LIBRARY) - set(BLAS_LIBRARY "blas" CACHE STRING "the blas library") - endif(NOT BLAS_LIBRARY) - find_library(_BLAS_LIB ${BLAS_LIBRARY} PATHS ${BLAS_LIBRARY_DIR}) + set(BLAS_LIBRARY "blas" CACHE FILEPATH "the blas library") + find_library(_BLAS_LIB NAMES "${BLAS_LIBRARY}" "goto" PATHS ${BLAS_LIBRARY_DIR}) + message("blaslibrary: ${_BLAS_LIB}") if(NOT _BLAS_LIB) - if(EXISTS ${BLAS_LIBRARY}) - set(_BLAS_LIB ${BLAS_LIBRARY}) - endif() - endif(NOT _BLAS_LIB) - if(NOT _BLAS_LIB) - message(ERROR "could not find the blas library. please set the variables BLAS_LIBRARY_DIR and BLAS_LIBRARY") + message(ERROR " could not find the blas library. please set the variable BLAS_LIBRARY to the blas library with full path") + else() + set(BLAS_LIBRARY "${_BLAS_LIB}") endif() list(APPEND AMDiS_LIBRARIES ${AMDiS_LIBRARY_DIR}/umfpack/libumfpack.a ${AMDiS_LIBRARY_DIR}/amd/libamd.a ${BLAS_LIBRARY}) list(APPEND AMDiS_LIBRARY_DIRS ${AMDiS_LIBRARY_DIR}/umfpack ${AMDiS_LIBRARY_DIR}/amd ${BLAS_LIBRARY_DIR}) @@ -97,6 +93,10 @@ if( AMDiS_NEED_PARMETIS ) list(APPEND AMDiS_LIBRARIES ${AMDiS_LIBRARY_DIR}/parmetis/libparmetis.a ${AMDiS_LIBRARY_DIR}/parmetis/libmetis.a) endif() +if( AMDiS_NEED_ZOLTAN ) + find_library(ZOLTAN_LIB zoltan DOC "full path to the zoltan library") + list(APPEND AMDiS_LIBRARIES ${ZOLTAN_LIB}) +endif() if(${AMDiS_FIND_COMPONENTS} MATCHES parmetis AND NOT AMDiS_NEED_PARMETIS) message(SEND_ERROR "amdis was not compiled with parmetis") endif() diff --git a/AMDiS/AMDiSUse.cmake b/AMDiS/AMDiSUse.cmake index 60716e5b..8433207a 100644 --- a/AMDiS/AMDiSUse.cmake +++ b/AMDiS/AMDiSUse.cmake @@ -5,9 +5,12 @@ if(AMDiS_HAS_PARALLEL_DOMAIN) else() find_package(MPI REQUIRED) if(MPI_FOUND) - INCLUDE(CMakeForceCompiler) - CMAKE_FORCE_CXX_COMPILER(mpicxx "The MPI C++ compiler") - CMAKE_FORCE_C_COMPILER(mpicc "The MPI C Compiler") +# INCLUDE(CMakeForceCompiler) +# CMAKE_FORCE_CXX_COMPILER(mpicxx "The MPI C++ compiler") +# CMAKE_FORCE_C_COMPILER(mpicc "The MPI C Compiler") + list(APPEND AMDiS_LIBRARIES ${MPI_LIBRARIES}) + list(APPEND AMDiS_COMPILEFLAGS ${MPI_COMPILE_FLAGS}) + list(APPEND AMDiS_INCLUDE_DIRS ${MPI_INCLUDE_PATH}) endif(MPI_FOUND) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${AMDiS_DIR}) set(PETSC_EXECUTABLE_RUNS ON) diff --git a/AMDiS/CMakeLists.txt b/AMDiS/CMakeLists.txt index 2ef03200..a0a3f9e6 100644 --- a/AMDiS/CMakeLists.txt +++ b/AMDiS/CMakeLists.txt @@ -156,9 +156,13 @@ SET(AMDIS_SRC ${SOURCE_DIR}/DOFIndexed.cc if(ENABLE_PARALLEL_DOMAIN) find_package(MPI REQUIRED) - INCLUDE (CMakeForceCompiler) - CMAKE_FORCE_C_COMPILER(mpicc "MPI C compiler") - CMAKE_FORCE_CXX_COMPILER(mpiCC "MPI C++ compiler") + if(MPI_FOUND) + #INCLUDE (CMakeForceCompiler) + #CMAKE_FORCE_C_COMPILER(mpicc "MPI C compiler") + #CMAKE_FORCE_CXX_COMPILER(mpiCC "MPI C++ compiler") + list(APPEND AMDiS_COMPILEFLAGS ${MPI_COMPILE_FLAGS}) + include_directories(${MPI_INCLUDE_PATH}) + endif(MPI_FOUND) add_custom_target(parmetis-lib ALL make @@ -171,6 +175,13 @@ if(ENABLE_PARALLEL_DOMAIN) DESTINATION lib/amdis/parmetis ) set(ENABLE_PARMETIS ON) + find_file(ZOLTAN_HEADER_DIR "zoltan_cpp.h") + if( ZOLTAN_HEADER_DIR ) + get_filename_component(ZOLTAN_HEADER_DIR "${ZOLTAN_HEADER_DIR}" PATH CACHE) + include_directories(${ZOLTAN_HEADER_DIR}) + else() + message( FATAL_ERROR "could not find zoltan.") + endif( ZOLTAN_HEADER_DIR ) set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};/usr/share/cmake-2.8/Modules/;${CMAKE_SOURCE_DIR}/") set(PETSC_EXECUTABLE_RUNS ON) find_package(PETSc REQUIRED) @@ -185,7 +196,8 @@ if(ENABLE_PARALLEL_DOMAIN) ${SOURCE_DIR}/parallel/MpiHelper.cc ${SOURCE_DIR}/parallel/ElementObjectData.cc ${SOURCE_DIR}/parallel/ParallelProblemStatBase.cc - ${SOURCE_DIR}/parallel/PetscSolver.cc) + ${SOURCE_DIR}/parallel/PetscSolver.cc + ${SOURCE_DIR}/parallel/ZoltanPartitioner.cc) SET(COMPILEFLAGS "${COMPILEFLAGS} -DHAVE_PARALLEL_DOMAIN_AMDIS=1") INSTALL(FILES ResolveCompilerPaths.cmake FindPackageMultipass.cmake FindPETSc.cmake DESTINATION share/amdis/) @@ -196,7 +208,7 @@ if(ENABLE_OPENMP) if(OPENMP_FOUND) SET(COMPILEFLAGS "${COMPILEFLAGS} ${OpenMP_CXX_FLAGS}") else() - message(WARNING "your compiler seems support openmp") + message(WARNING "your compiler seems not supporting openmp") endif() endif(ENABLE_OPENMP) -- GitLab