diff --git a/cmake_modules/GenPkgConfig.cmake b/cmake_modules/GenPkgConfig.cmake index dbc9723c87ca0830443829ecbf3a475b75af170c..16e5e4f4708418c8b81fa5316f90ecd6e86e2b10 100644 --- a/cmake_modules/GenPkgConfig.cmake +++ b/cmake_modules/GenPkgConfig.cmake @@ -84,6 +84,7 @@ MACRO(GENERATE_PKGCONFIG_FILE) set(CHAMELEON_PKGCONFIG_DEFINITIONS "") set(COREBLAS_PKGCONFIG_DEFINITIONS "") set(CUDABLAS_PKGCONFIG_DEFINITIONS "") + set(HIPBLAS_PKGCONFIG_DEFINITIONS "") # The link flags specific to this package and any required libraries # that don't support PkgConfig @@ -91,6 +92,7 @@ MACRO(GENERATE_PKGCONFIG_FILE) set(CHAMELEON_PKGCONFIG_LIBS "-lchameleon") set(COREBLAS_PKGCONFIG_LIBS "-lcoreblas") set(CUDABLAS_PKGCONFIG_LIBS "-lcudablas") + set(HIPBLAS_PKGCONFIG_LIBS "-lhipblas") # The link flags for private libraries required by this package but not # exposed to applications @@ -98,12 +100,14 @@ MACRO(GENERATE_PKGCONFIG_FILE) set(CHAMELEON_PKGCONFIG_LIBS_PRIVATE "") set(COREBLAS_PKGCONFIG_LIBS_PRIVATE "") set(CUDABLAS_PKGCONFIG_LIBS_PRIVATE "") + set(HIPBLAS_PKGCONFIG_LIBS_PRIVATE "") # A list of packages required by this package set(CHAMELEON_LAPACK_PKGCONFIG_REQUIRED "chameleon") set(CHAMELEON_PKGCONFIG_REQUIRED "hqr") set(COREBLAS_PKGCONFIG_REQUIRED "") set(CUDABLAS_PKGCONFIG_REQUIRED "") + set(HIPBLAS_PKGCONFIG_REQUIRED "") # A list of private packages required by this package but not exposed to # applications @@ -111,47 +115,56 @@ MACRO(GENERATE_PKGCONFIG_FILE) set(CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE "") set(COREBLAS_PKGCONFIG_REQUIRED_PRIVATE "") set(CUDABLAS_PKGCONFIG_REQUIRED_PRIVATE "") - - if(CHAMELEON_SCHED_STARPU) + set(HIPBLAS_PKGCONFIG_REQUIRED_PRIVATE "") + + if(CHAMELEON_SCHED_OPENMP) + list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_openmp) + list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${OpenMP_C_LIBRARIES}") + elseif(CHAMELEON_SCHED_PARSEC) + list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_parsec) + list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${PARSEC_LIBRARIES}") + elseif(CHAMELEON_SCHED_QUARK) + list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_quark) + list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${QUARK_LIBRARIES_DEP}") + elseif(CHAMELEON_SCHED_STARPU) list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_starpu) if ( CHAMELEON_USE_MPI ) list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpumpi-${CHAMELEON_STARPU_VERSION}) else() list(APPEND CHAMELEON_PKGCONFIG_REQUIRED_PRIVATE starpu-${CHAMELEON_STARPU_VERSION}) endif() - elseif(CHAMELEON_SCHED_QUARK) - list(APPEND CHAMELEON_PKGCONFIG_LIBS -lchameleon_quark) - list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE "${QUARK_LIBRARIES_DEP}") endif() if(NOT CHAMELEON_SIMULATION) list(APPEND COREBLAS_PKGCONFIG_LIBS_PRIVATE - ${LAPACKE_LIBRARIES_DEP} - ${CBLAS_LIBRARIES_DEP} - ) - list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE - ${EXTRA_LIBRARIES} + ${LAPACKE_LIBRARIES} + ${CBLAS_LIBRARIES} ) list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "coreblas") if(CHAMELEON_USE_CUDA) - list(APPEND CUDABLAS_PKGCONFIG_LIBS_PRIVATE ${EXTRA_LIBRARIES_CUDA}) + list(APPEND CUDABLAS_PKGCONFIG_LIBS_PRIVATE ${CUDA_CUBLAS_LIBRARIES}) + list(APPEND CUDABLAS_PKGCONFIG_REQUIRED "cuda") list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "cudablas") endif() - else(NOT CHAMELEON_SIMULATION) - - if(CHAMELEON_USE_CUDA) - list(APPEND CHAMELEON_PKGCONFIG_LIBS -lcudablas) + if(CHAMELEON_USE_HIP) + list(APPEND HIPBLAS_PKGCONFIG_LIBS_PRIVATE ${HIPBLAS_LIBRARIES}) + list(APPEND HIPBLAS_PKGCONFIG_LIBS_PRIVATE ${HIP_LIBRARIES}) + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "hipblas") endif() - list(APPEND CHAMELEON_PKGCONFIG_LIBS - -lcoreblas - ${EXTRA_LIBRARIES} - ) endif(NOT CHAMELEON_SIMULATION) + list(APPEND CHAMELEON_PKGCONFIG_LIBS_PRIVATE + ${M_LIBRARIES} + ) + + if(CHAMELEON_USE_MPI) + list(APPEND CHAMELEON_PKGCONFIG_REQUIRED "mpi") + endif() + # Define required package # ----------------------- CLEAN_LIB_LIST(CHAMELEON) @@ -159,6 +172,9 @@ MACRO(GENERATE_PKGCONFIG_FILE) if(CHAMELEON_USE_CUDA) CLEAN_LIB_LIST(CUDABLAS) endif() + if(CHAMELEON_USE_HIP) + CLEAN_LIB_LIST(HIPBLAS) + endif() # Create .pc file # --------------- @@ -168,6 +184,9 @@ MACRO(GENERATE_PKGCONFIG_FILE) if(CHAMELEON_USE_CUDA) SET(_output_cudablas_file "${CMAKE_BINARY_DIR}/cudablas.pc") endif() + if(CHAMELEON_USE_HIP) + SET(_output_hipblas_file "${CMAKE_BINARY_DIR}/hipblas.pc") + endif() # TODO: add url of CHAMELEON releases in .pc file CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/chameleon_lapack.pc.in" "${_output_chameleon_lapack_file}" @ONLY) @@ -176,6 +195,9 @@ MACRO(GENERATE_PKGCONFIG_FILE) if(CHAMELEON_USE_CUDA) CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/cudablas.pc.in" "${_output_cudablas_file}" @ONLY) endif() + if(CHAMELEON_USE_HIP) + CONFIGURE_FILE("${CMAKE_CURRENT_SOURCE_DIR}/lib/pkgconfig/hipblas.pc.in" "${_output_hipblas_file}" @ONLY) + endif() # installation # ------------ @@ -183,6 +205,7 @@ MACRO(GENERATE_PKGCONFIG_FILE) INSTALL(FILES ${_output_chameleon_file} DESTINATION lib/pkgconfig) INSTALL(FILES ${_output_coreblas_file} DESTINATION lib/pkgconfig) INSTALL(FILES ${_output_cudablas_file} DESTINATION lib/pkgconfig) + INSTALL(FILES ${_output_hipblas_file} DESTINATION lib/pkgconfig) ENDMACRO(GENERATE_PKGCONFIG_FILE) diff --git a/lib/pkgconfig/cudablas.pc.in b/lib/pkgconfig/cudablas.pc.in index 2511060b2f4806c41d3a63a800cec50f5bd066ab..c9d38dfde8fefcc8737c66ecf2bc2bfba14d3cb2 100644 --- a/lib/pkgconfig/cudablas.pc.in +++ b/lib/pkgconfig/cudablas.pc.in @@ -14,7 +14,7 @@ libdir=${exec_prefix}/lib includedir=${exec_prefix}/include Name: cudablas -Description: Interface to cuBLAS/MAGMA routines + some other auxiliary routines +Description: Interface to cuBLAS routines + some other auxiliary routines Version: @CHAMELEON_VERSION_MAJOR@.@CHAMELEON_VERSION_MINOR@.@CHAMELEON_VERSION_MICRO@ Cflags: @CUDABLAS_PKGCONFIG_DEFINITIONS@ -I${includedir} Libs: -L${libdir} @CUDABLAS_PKGCONFIG_LIBS@ diff --git a/lib/pkgconfig/hipblas.pc.in b/lib/pkgconfig/hipblas.pc.in new file mode 100644 index 0000000000000000000000000000000000000000..78d0f55d493774f3c7ef0b712073d41ff126f241 --- /dev/null +++ b/lib/pkgconfig/hipblas.pc.in @@ -0,0 +1,23 @@ +# +# @file hipblas.pc +# +# @copyright 2016-2023 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, +# Univ. Bordeaux. All rights reserved. +# +# @version 1.2.0 +# @author Florent Pruvost +# @date 2023-05-03 +# +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${exec_prefix}/include + +Name: hipblas +Description: Interface to hipBLAS routines + some other auxiliary routines +Version: @CHAMELEON_VERSION_MAJOR@.@CHAMELEON_VERSION_MINOR@.@CHAMELEON_VERSION_MICRO@ +Cflags: @HIPBLAS_PKGCONFIG_DEFINITIONS@ -I${includedir} +Libs: -L${libdir} @HIPBLAS_PKGCONFIG_LIBS@ +Libs.private: @HIPBLAS_PKGCONFIG_LIBS_PRIVATE@ +Requires: @HIPBLAS_PKGCONFIG_REQUIRED@ +Requires.private: @HIPBLAS_PKGCONFIG_REQUIRED_PRIVATE@