diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 386bc3d7..89341966 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -2,7 +2,7 @@ name: CMake CI on: push: - paths-exclude: + paths-ignore: - '.github/workflows/make.yml' - '.gitignore' - 'README' @@ -11,7 +11,7 @@ on: - '**Makefile' - 'SLmake.inc.example' pull_request: - paths-exclude: + paths-ignore: - '.github/workflows/make.yml' - '.gitignore' - 'README' @@ -23,12 +23,9 @@ on: env: CFLAGS: "-Wall -pedantic" FFLAGS: "-fcheck=all,no-bounds" - BUILD_TYPE: Release + CMAKE_BUILD_TYPE: Release MPIEXEC_PREFLAGS: "--oversubscribe" -defaults: - run: - shell: bash jobs: @@ -38,42 +35,200 @@ jobs: steps: - name: Checkout ScaLAPACK - uses: actions/checkout@v2 - - - name: Install ninja-build tool - uses: seanmiddleditch/gha-setup-ninja@v3 + uses: actions/checkout@v3 - name: Setup MPI # uses: mpi4py/setup-mpi@v1 run: | - sudo apt -y update - sudo apt -y install openmpi-bin libopenmpi-dev + sudo apt update + sudo apt install --no-install-recommends openmpi-bin libopenmpi-dev + + - name: Setup Ninja + run: sudo apt install --no-install-recommends ninja-build - name: Install BLAS and LAPACK - run: sudo apt -y install libblas-dev liblapack-dev - + run: sudo apt install --no-install-recommends libblas-dev liblapack-dev + - name: CMake configuration run: > cmake -B build -G Ninja - -D CMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} - -D CMAKE_INSTALL_PREFIX=${{github.workspace}}/scalapack_install - -D BUILD_SHARED_LIBS=ON - -D SCALAPACK_BUILD_TESTS=ON - -D MPIEXEC_PREFLAGS=${{env.MPIEXEC_PREFLAGS}} - + --install-prefix ${{ github.workspace }}/scalapack_install + -DBUILD_SHARED_LIBS=ON + -DSCALAPACK_BUILD_TESTS=ON + -DMPIEXEC_PREFLAGS=${{ env.MPIEXEC_PREFLAGS }} + - name: Build - working-directory: ${{github.workspace}}/build + working-directory: ${{ github.workspace }}/build run: | ctest -D ExperimentalStart ctest -D ExperimentalConfigure ctest -D ExperimentalBuild - name: Test - working-directory: ${{github.workspace}}/build + working-directory: ${{ github.workspace }}/build run: | ctest -D ExperimentalTest --schedule-random --output-on-failure --timeout 180 ctest -D ExperimentalSubmit - + + - name: Install + run: cmake --install build + + + real32: + runs-on: ubuntu-latest + + steps: + + - name: Checkout ScaLAPACK + uses: actions/checkout@v3 + + - name: Setup MPI + run: | + sudo apt update + sudo apt install --no-install-recommends openmpi-bin libopenmpi-dev + + - name: CMake configuration + run: > + cmake -B build + --install-prefix ${{ runner.temp }} + -DBUILD_SINGLE=on -DBUILD_DOUBLE=off -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=off + -DMPIEXEC_PREFLAGS=${{ env.MPIEXEC_PREFLAGS }} + + - name: Build + run: cmake --build build --parallel + + - name: Test + run: ctest --test-dir build --schedule-random --output-on-failure --timeout 180 + + - name: Install + run: cmake --install build + + + real64: + runs-on: ubuntu-latest + + steps: + + - name: Checkout ScaLAPACK + uses: actions/checkout@v3 + + - name: Setup MPI + run: | + sudo apt update + sudo apt install --no-install-recommends openmpi-bin libopenmpi-dev + + - name: CMake configuration + run: > + cmake -B build + --install-prefix ${{ runner.temp }} + -DBUILD_SINGLE=off -DBUILD_DOUBLE=on -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=off + -DMPIEXEC_PREFLAGS=${{ env.MPIEXEC_PREFLAGS }} + + - name: Build + run: cmake --build build --parallel + + - name: Test + run: ctest --test-dir build --schedule-random --output-on-failure --timeout 180 + + - name: Install + run: cmake --install build + + + complex32: + runs-on: ubuntu-latest + + steps: + + - name: Checkout ScaLAPACK + uses: actions/checkout@v3 + + - name: Setup MPI + run: | + sudo apt update + sudo apt install --no-install-recommends openmpi-bin libopenmpi-dev + + - name: CMake configuration + run: > + cmake -B build + --install-prefix ${{ runner.temp }} + -DBUILD_SINGLE=off -DBUILD_DOUBLE=off -DBUILD_COMPLEX=on -DBUILD_COMPLEX16=off + -DMPIEXEC_PREFLAGS=${{ env.MPIEXEC_PREFLAGS }} + + - name: Build + run: cmake --build build --parallel + + - name: Test + run: ctest --test-dir build --schedule-random --output-on-failure --timeout 180 + + - name: Install + run: cmake --install build + + + complex64: + runs-on: ubuntu-latest + + steps: + + - name: Checkout ScaLAPACK + uses: actions/checkout@v3 + + - name: Setup MPI + run: | + sudo apt update + sudo apt install --no-install-recommends openmpi-bin libopenmpi-dev + + - name: CMake configuration + run: > + cmake -B build + --install-prefix ${{ runner.temp }} + -DBUILD_SINGLE=off -DBUILD_DOUBLE=off -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=on + -DMPIEXEC_PREFLAGS=${{ env.MPIEXEC_PREFLAGS }} + + - name: Build + run: cmake --build build --parallel + + - name: Test + run: ctest --test-dir build --schedule-random --output-on-failure --timeout 180 + + - name: Install + run: cmake --install build + + + macos-real32: + # just testing one precision to save time on MacOS runner + runs-on: macos-latest + + env: + HOMEBREW_NO_INSTALL_CLEANUP: 1 + FC: gfortran-11 + + steps: + + - name: Checkout ScaLAPACK + uses: actions/checkout@v3 + + - name: Setup MPI, Ninja + run: brew install open-mpi ninja + + - name: CMake configuration + run: > + cmake -B build + -G Ninja + --install-prefix ${{ runner.temp }} + -DBUILD_SINGLE=on -DBUILD_DOUBLE=off -DBUILD_COMPLEX=off -DBUILD_COMPLEX16=off + -DMPIEXEC_PREFLAGS=${{ env.MPIEXEC_PREFLAGS }} + + - name: Build + run: cmake --build build --parallel + + - name: Test + run: > + ctest --test-dir build + --schedule-random --output-on-failure --timeout 180 + -E "xssep|xsgsep|xssyevr" +# xssep, xssyevr take too long on CI Runner for MacOS +# xsgsep fails on MacOS only, including on a Mac M1 laptop--needs to be investigated. + - name: Install - run: cmake --build build --target install + run: cmake --install build diff --git a/.github/workflows/make.yml b/.github/workflows/make.yml index 5c49e618..9a857f96 100644 --- a/.github/workflows/make.yml +++ b/.github/workflows/make.yml @@ -2,7 +2,7 @@ name: Makefile CI on: push: - paths-exclude: + paths-ignore: - '.github/workflows/cmake.yml' - '.gitignore' - 'README' @@ -10,8 +10,9 @@ on: - 'LICENSE' - 'CMAKE**' - '**CMakeLists.txt' + - '**.cmake' pull_request: - paths-exclude: + paths-ignore: - '.github/workflows/cmake.yml' - '.gitignore' - 'README' @@ -19,10 +20,8 @@ on: - 'LICENSE' - 'CMAKE**' - '**CMakeLists.txt' + - '**.cmake' -defaults: - run: - shell: bash jobs: @@ -32,7 +31,7 @@ jobs: steps: - name: Checkout ScaLAPACK - uses: actions/checkout@v2 + uses: actions/checkout@v3 - name: Setup MPI uses: mpi4py/setup-mpi@v1 @@ -42,7 +41,7 @@ jobs: cp SLmake.inc.example SLmake.inc make --silent -j lib make --silent all - + - name: Run examples working-directory: ${{github.workspace}}/EXAMPLE run: | diff --git a/.gitignore b/.gitignore index 597313e5..a6a6b9f0 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ BLACS/INSTALL/cmake_install.cmake BLACS/INSTALL/Makefile BLACS/INSTALL/x* +BLACS/INSTALL/*ninja* TESTING/x* REDIST/TESTING/x* PBLAS/TESTING/x* @@ -15,4 +16,3 @@ PBLAS/TIMING/PB_Cwarn.c BLACS/TESTING/xCbtest BLACS/TESTING/xFbtest SLmake.inc - diff --git a/BLACS/CMakeLists.txt b/BLACS/CMakeLists.txt index b70ba04b..7f053135 100644 --- a/BLACS/CMakeLists.txt +++ b/BLACS/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(SRC) -if(${SCALAPACK_BUILD_TESTS}) + +if(SCALAPACK_BUILD_TESTS) add_subdirectory(TESTING) endif() diff --git a/BLACS/SRC/CMakeLists.txt b/BLACS/SRC/CMakeLists.txt index e29d39d9..0b1fdcc8 100644 --- a/BLACS/SRC/CMakeLists.txt +++ b/BLACS/SRC/CMakeLists.txt @@ -1,18 +1,22 @@ # -------------------------- # The communication routines # -------------------------- -set (comm - igesd2d_.c sgesd2d_.c dgesd2d_.c cgesd2d_.c zgesd2d_.c - itrsd2d_.c strsd2d_.c dtrsd2d_.c ctrsd2d_.c ztrsd2d_.c - igerv2d_.c sgerv2d_.c dgerv2d_.c cgerv2d_.c zgerv2d_.c - itrrv2d_.c strrv2d_.c dtrrv2d_.c ctrrv2d_.c ztrrv2d_.c - igebs2d_.c sgebs2d_.c dgebs2d_.c cgebs2d_.c zgebs2d_.c - igebr2d_.c sgebr2d_.c dgebr2d_.c cgebr2d_.c zgebr2d_.c - itrbs2d_.c strbs2d_.c dtrbs2d_.c ctrbs2d_.c ztrbs2d_.c - itrbr2d_.c strbr2d_.c dtrbr2d_.c ctrbr2d_.c ztrbr2d_.c - igsum2d_.c sgsum2d_.c dgsum2d_.c cgsum2d_.c zgsum2d_.c - igamx2d_.c sgamx2d_.c dgamx2d_.c cgamx2d_.c zgamx2d_.c - igamn2d_.c sgamn2d_.c dgamn2d_.c cgamn2d_.c zgamn2d_.c) +set(comm +igesd2d_.c itrsd2d_.c igerv2d_.c itrrv2d_.c igebs2d_.c igebr2d_.c itrbs2d_.c itrbr2d_.c igsum2d_.c igamx2d_.c igamn2d_.c +dgsum2d_.c dgamx2d_.c dgamn2d_.c +) +if(BUILD_SINGLE) + list(APPEND comm sgesd2d_.c strsd2d_.c sgerv2d_.c strrv2d_.c sgebs2d_.c sgebr2d_.c strbs2d_.c strbr2d_.c sgsum2d_.c sgamx2d_.c sgamn2d_.c) +endif() +if(BUILD_DOUBLE) + list(APPEND comm dgesd2d_.c dtrsd2d_.c dgerv2d_.c dtrrv2d_.c dgebs2d_.c dgebr2d_.c dtrbs2d_.c dtrbr2d_.c dgamx2d_.c) +endif() +if(BUILD_COMPLEX) + list(APPEND comm cgesd2d_.c ctrsd2d_.c cgerv2d_.c ctrrv2d_.c cgebs2d_.c cgebr2d_.c ctrbs2d_.c ctrbr2d_.c cgsum2d_.c cgamx2d_.c cgamn2d_.c) +endif() +if(BUILD_COMPLEX16) + list(APPEND comm zgesd2d_.c ztrsd2d_.c zgerv2d_.c ztrrv2d_.c zgebs2d_.c zgebr2d_.c ztrbs2d_.c ztrbr2d_.c zgsum2d_.c zgamx2d_.c zgamn2d_.c) +endif() # -------------------- # The support routines @@ -39,18 +43,32 @@ set (internal BI_BuffIsFree.c BI_imvcopy.c BI_smvcopy.c BI_dmvcopy.c BI_ivmcopy.c BI_svmcopy.c BI_dvmcopy.c BI_Pack.c BI_Unpack.c BI_GetMpiGeType.c BI_GetMpiTrType.c - BI_ivvsum.c BI_svvsum.c BI_dvvsum.c BI_cvvsum.c BI_zvvsum.c - BI_ivvamx.c BI_svvamx.c BI_dvvamx.c BI_cvvamx.c BI_zvvamx.c - BI_ivvamx2.c BI_svvamx2.c BI_dvvamx2.c BI_cvvamx2.c BI_zvvamx2.c - BI_ivvamn.c BI_svvamn.c BI_dvvamn.c BI_cvvamn.c BI_zvvamn.c - BI_ivvamn2.c BI_svvamn2.c BI_dvvamn2.c BI_cvvamn2.c BI_zvvamn2.c - BI_iMPI_amx.c BI_sMPI_amx.c BI_dMPI_amx.c BI_cMPI_amx.c - BI_zMPI_amx.c BI_iMPI_amx2.c BI_sMPI_amx2.c BI_dMPI_amx2.c - BI_cMPI_amx2.c BI_zMPI_amx2.c BI_iMPI_amn.c BI_sMPI_amn.c - BI_dMPI_amn.c BI_cMPI_amn.c BI_zMPI_amn.c BI_iMPI_amn2.c - BI_sMPI_amn2.c BI_dMPI_amn2.c BI_cMPI_amn2.c BI_zMPI_amn2.c - BI_cMPI_sum.c BI_zMPI_sum.c BI_ContxtNum.c BI_GlobalVars.c - BI_TransUserComm.c ) + BI_ivvsum.c BI_ivvamx.c BI_ivvamx2.c BI_ivvamn.c BI_ivvamn2.c + BI_iMPI_amx.c BI_iMPI_amx2.c BI_iMPI_amn.c BI_iMPI_amn2.c + BI_ContxtNum.c BI_GlobalVars.c BI_TransUserComm.c + BI_dvvsum.c BI_dvvamx.c BI_dvvamx2.c BI_dvvamn.c BI_dvvamn2.c + BI_dMPI_amx.c BI_dMPI_amx2.c BI_dMPI_amn.c BI_dMPI_amn2.c + BI_dmvcopy.c BI_dvmcopy.c +) +if(BUILD_SINGLE) + list(APPEND internal + BI_svvsum.c BI_svvamx.c BI_svvamx2.c BI_svvamn.c BI_svvamn2.c + BI_sMPI_amx.c BI_sMPI_amx2.c BI_sMPI_amn.c BI_sMPI_amn2.c + BI_smvcopy.c BI_svmcopy.c + ) +endif() +if(BUILD_COMPLEX) + list(APPEND internal + BI_cvvsum.c BI_cvvamx.c BI_cvvamx2.c BI_cvvamn.c BI_cvvamn2.c + BI_cMPI_amx.c BI_cMPI_amx2.c BI_cMPI_amn.c BI_cMPI_amn2.c BI_cMPI_sum.c + ) +endif() +if(BUILD_COMPLEX16) + list(APPEND internal + BI_zvvsum.c BI_zvvamx.c BI_zvvamx2.c BI_zvvamn.c BI_zvvamn2.c + BI_zMPI_amx.c BI_zMPI_amx2.c BI_zMPI_amn.c BI_zMPI_amn2.c BI_zMPI_sum.c + ) +endif() # @@ -81,4 +99,3 @@ endforeach() set(blacs ${srcs} ${srcs_C} ${internal}) #add_library(scalapack ${srcs} ${srcs_C} ${internal}) #scalapack_install_library(scalapack) - diff --git a/BLACS/TESTING/CMakeLists.txt b/BLACS/TESTING/CMakeLists.txt index 6a74a506..72e2d254 100644 --- a/BLACS/TESTING/CMakeLists.txt +++ b/BLACS/TESTING/CMakeLists.txt @@ -1,12 +1,18 @@ +if(NOT (BUILD_SINGLE AND BUILD_DOUBLE AND BUILD_COMPLEX AND BUILD_COMPLEX16)) + return() +endif() + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set(FTestObj blacstest.f btprim.f tools.f) -if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set_source_files_properties(blacstest.f PROPERTIES COMPILE_FLAGS "-std=legacy") +if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + set_property(SOURCE blacstest.f PROPERTY COMPILE_FLAGS "-std=legacy") endif() add_executable(xFbtest ${FTestObj}) -target_link_libraries(xFbtest scalapack MPI::MPI_Fortran) +target_link_libraries(xFbtest PRIVATE scalapack MPI::MPI_Fortran) set(CTestObj Cbt.c) @@ -17,12 +23,7 @@ set_property( ) add_executable(xCbtest ${CTestObj} ${FTestObj}) -target_link_libraries(xCbtest scalapack MPI::MPI_Fortran) - -file(COPY bsbr.dat DESTINATION ${SCALAPACK_BINARY_DIR}/BLACS/TESTING) -file(COPY bt.dat DESTINATION ${SCALAPACK_BINARY_DIR}/BLACS/TESTING) -file(COPY comb.dat DESTINATION ${SCALAPACK_BINARY_DIR}/BLACS/TESTING) -file(COPY sdrv.dat DESTINATION ${SCALAPACK_BINARY_DIR}/BLACS/TESTING) +target_link_libraries(xCbtest PRIVATE scalapack MPI::MPI_Fortran) # We could run the BLACS TESTING the following way # But BLACS TESTING are TESTING anormal exit so even if they pass, @@ -30,26 +31,22 @@ file(COPY sdrv.dat DESTINATION ${SCALAPACK_BINARY_DIR}/BLACS/TESTING) #add_test(xFbtest0 ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xFbtest) #add_test(xCbtest0 ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xCbtest) -add_test(xCbtest - ${CMAKE_COMMAND} - -DMPIEXEC=${MPIEXEC} +add_test(NAME xCbtest + COMMAND ${CMAKE_COMMAND} + -DMPIEXEC_EXECUTABLE=${MPIEXEC_EXECUTABLE} -DMPIEXEC_NUMPROC_FLAG=${MPIEXEC_NUMPROC_FLAG} -DMPIEXEC_PREFLAGS=${MPIEXEC_PREFLAGS} - -DTEST_PROG=xCbtest - -DOUTPUTDIR=${SCALAPACK_BINARY_DIR}/BLACS/TESTING - -DRUNTIMEDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - -DSOURCEDIR=${CMAKE_CURRENT_SOURCE_DIR} + -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -DEXE=$ -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake ) -add_test(xFbtest - ${CMAKE_COMMAND} - -DMPIEXEC=${MPIEXEC} +add_test(NAME xFbtest + COMMAND ${CMAKE_COMMAND} + -DMPIEXEC_EXECUTABLE=${MPIEXEC_EXECUTABLE} -DMPIEXEC_NUMPROC_FLAG=${MPIEXEC_NUMPROC_FLAG} -DMPIEXEC_PREFLAGS=${MPIEXEC_PREFLAGS} - -DTEST_PROG=xFbtest - -DOUTPUTDIR=${SCALAPACK_BINARY_DIR}/BLACS/TESTING - -DRUNTIMEDIR=${CMAKE_RUNTIME_OUTPUT_DIRECTORY} - -DSOURCEDIR=${CMAKE_CURRENT_SOURCE_DIR} + -DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR} + -DEXE=$ -P ${CMAKE_CURRENT_SOURCE_DIR}/runtest.cmake ) diff --git a/BLACS/TESTING/runtest.cmake b/BLACS/TESTING/runtest.cmake index 1c2ba06c..ec0ec9ad 100644 --- a/BLACS/TESTING/runtest.cmake +++ b/BLACS/TESTING/runtest.cmake @@ -1,22 +1,28 @@ -message("Running BLACS TESTS") -message(STATUS "${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./${TEST_PROG}") -message(STATUS "Output out_${TEST_PROG}.txt") -file(COPY ${RUNTIMEDIR}/${TEST_PROG} DESTINATION ${OUTPUTDIR}) +get_filename_component(OUTPUTDIR ${EXE} DIRECTORY) +get_filename_component(name ${EXE} NAME_WE) -execute_process(COMMAND ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./${TEST_PROG} - OUTPUT_FILE "out_${TEST_PROG}.txt" - ERROR_FILE "error_${TEST_PROG}.txt" - RESULT_VARIABLE HAD_ERROR) +set(cmd ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ${EXE}) +set(outfile ${OUTPUTDIR}/out_${name}.txt) +set(errfile ${OUTPUTDIR}/err_${name}.txt) +message(STATUS "Output/Error log files: ${outfile} ${errfile}") +set(CMAKE_EXECUTE_PROCESS_COMMAND_ECHO STDOUT) -if(HAD_ERROR) +execute_process(COMMAND ${cmd} +OUTPUT_FILE ${outfile} +ERROR_FILE ${errfile} +RESULT_VARIABLE HAD_ERROR +WORKING_DIRECTORY ${SOURCE_DIR} +) + +if(NOT HAD_ERROR EQUAL 0) # This is normal to exit in Error (good behaviour) # So we are going to check that the output have the last line of the testing : DONE BLACS_GRIDEXIT - file(READ "out_${TEST_PROG}.txt" TESTSTRING) + file(READ ${outfile} TESTSTRING) - STRING(REPLACE "DONE BLACS_GRIDEXIT" "BLACS OK" tmp ${TESTSTRING}) + STRING(REPLACE "DONE BLACS_GRIDEXIT" "BLACS OK" tmp "${TESTSTRING}") if("${tmp}" STREQUAL "${TESTSTRING}") - message( STATUS "Error in error_${TEST_PROG}.txt") + message( STATUS "Error in ${errfile}") message(FATAL_ERROR "Test failed - Test did not reach DONE BLACS_GRIDEXIT") else() message( STATUS "Test Passed") diff --git a/CMAKE/CheckBLACSCompilerFlags.cmake b/CMAKE/CheckBLACSCompilerFlags.cmake index 78c5dba0..f8fb8485 100644 --- a/CMAKE/CheckBLACSCompilerFlags.cmake +++ b/CMAKE/CheckBLACSCompilerFlags.cmake @@ -1,10 +1,10 @@ # This module checks against various known compilers and thier respective # flags to determine any specific flags needing to be set. -# +# # 1. If FPE traps are enabled either abort or disable them # 2. Specify fixed form if needed # 3. Ensure that Release builds use O2 instead of O3 -# +# #============================================================================= # Author: Chuck Atkins # Copyright 2011 @@ -16,7 +16,7 @@ set( FPE_EXIT FALSE ) # GNU Fortran if( CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" ) - if( "${CMAKE_Fortran_FLAGS}" MATCHES "-ffpe-trap=[izoupd]") + if( "${CMAKE_Fortran_FLAGS}" MATCHES "-ffpe-trap=[izoupd]") set( FPE_EXIT TRUE ) endif() @@ -55,12 +55,12 @@ elseif( CMAKE_Fortran_COMPILER_ID STREQUAL "HP" ) if( "${CMAKE_Fortran_FLAGS}" MATCHES "\\+fp_exception" ) set( FPE_EXIT TRUE ) endif() - + if( NOT ("${CMAKE_Fortran_FLAGS}" MATCHES "\\+fltconst_strict") ) message( STATUS "Enabling strict float conversion with +fltconst_strict" ) set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} +fltconst_strict" CACHE STRING "Flags for Fortran compiler." FORCE ) - endif() + endif() # Most versions of cmake don't have good default options for the HP compiler set( CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG} -g" @@ -76,13 +76,13 @@ endif() if( "${CMAKE_Fortran_FLAGS_RELEASE}" MATCHES "O[3-9]" ) message( STATUS "Reducing RELEASE optimization level to O2" ) - string( REGEX REPLACE "O[3-9]" "O2" CMAKE_Fortran_FLAGS_RELEASE + string( REGEX REPLACE "O[3-9]" "O2" CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE}" ) set( CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE}" CACHE STRING "Flags used by the compiler during release builds" FORCE ) elseif ( "${CMAKE_Fortran_FLAGS_RELEASE}" MATCHES "Ofast" ) message( STATUS "Reducing RELEASE optimization level to O2" ) - string( REGEX REPLACE "Ofast" "O2" CMAKE_Fortran_FLAGS_RELEASE + string( REGEX REPLACE "Ofast" "O2" CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE}" ) set( CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE}" CACHE STRING "Flags used by the compiler during release builds" FORCE ) diff --git a/CMakeLists.txt b/CMakeLists.txt index c12f8a2d..11118034 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,23 @@ -cmake_minimum_required(VERSION 3.9) +cmake_minimum_required(VERSION 3.9...3.25) project(SCALAPACK VERSION 2.2.1 LANGUAGES C Fortran) +# -------------------------------------------------- +# Precision to build +# By default all precisions are generated +option(BUILD_SINGLE "Build single precision real" ON) +option(BUILD_DOUBLE "Build double precision real" ON) +option(BUILD_COMPLEX "Build single precision complex" ON) +option(BUILD_COMPLEX16 "Build double precision complex" ON) +if(BUILD_COMPLEX) + set(BUILD_SINGLE true) +endif() +if(BUILD_COMPLEX16) + set(BUILD_DOUBLE true) +endif() + +include(GNUInstallDirs) + # Configure the warning and code coverage suppression file configure_file( "${SCALAPACK_SOURCE_DIR}/CMAKE/CTestCustom.cmake.in" @@ -12,11 +28,11 @@ configure_file( # Add the CMake directory for custon CMake modules set(CMAKE_MODULE_PATH "${SCALAPACK_SOURCE_DIR}/CMAKE" ${CMAKE_MODULE_PATH}) -if (UNIX) - if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Intel") - set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" ) - endif () -endif () +if(UNIX) + if(CMAKE_Fortran_COMPILER_ID STREQUAL "Intel") + add_compile_options("$<$:-fltconsistency;-fp_port>") + endif() +endif() # # MPI @@ -26,7 +42,7 @@ set(CMAKE_PREFIX_PATH "${MPI_BASE_DIR};${CMAKE_PREFIX_PATH}") find_package(MPI) if (MPI_FOUND) message(STATUS "Found MPI_LIBRARY : ${MPI_FOUND} ") - + find_program(MPI_C_COMPILER NAMES mpicc HINTS "${MPI_BASE_DIR}" @@ -71,12 +87,6 @@ else() endif() -if (UNIX) - if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "Intel") - set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fltconsistency -fp_port" ) - endif () -endif () - macro(SCALAPACK_install_library lib) install(TARGETS ${lib} EXPORT scalapack-targets ARCHIVE DESTINATION lib${LIB_SUFFIX} @@ -89,9 +99,7 @@ endmacro() # Testing SET(DART_TESTING_TIMEOUT 600) -enable_testing() include(CTest) -enable_testing() # -------------------------------------------------- # Organize output files. On Windows this also keeps .dll files next @@ -102,18 +110,11 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/lib) # -------------------------------------------------- # By default static library -function (invertBoolean varName varValue) - if (${varValue}) - set(${varName} false PARENT_SCOPE) - else () - set(${varName} true PARENT_SCOPE) - endif () -endfunction () option(BUILD_SHARED_LIBS "Build shared libraries" OFF ) -invertBoolean("BUILD_STATIC_LIBS" ${BUILD_SHARED_LIBS}) -if ((${BUILD_SHARED_LIBS} EQUAL ON) AND NOT CMAKE_POSITION_INDEPENDENT_CODE) +set(BUILD_STATIC_LIBS $) +if(BUILD_SHARED_LIBS) set(CMAKE_POSITION_INDEPENDENT_CODE ON) -endif () +endif() # -------------------------------------------------- # Check for any necessary platform specific compiler flags @@ -154,35 +155,55 @@ IF(LAPACK_LIBRARIES) include(CheckFortranFunctionExists) message(STATUS "--> LAPACK supplied by user is ${LAPACK_LIBRARIES}.") set(CMAKE_REQUIRED_LIBRARIES ${LAPACK_LIBRARIES}) - CHECK_FORTRAN_FUNCTION_EXISTS("dgesv" LAPACK_FOUND) + set(LAPACK_FOUND true) + if(BUILD_SINGLE) + check_fortran_function_exists("sgesv" LAPACK_s_FOUND) + if(NOT LAPACK_s_FOUND) + set(LAPACK_FOUND false) + endif() + endif() + if(BUILD_DOUBLE) + check_fortran_function_exists("dgesv" LAPACK_d_FOUND) + if(NOT LAPACK_d_FOUND) + set(LAPACK_FOUND false) + endif() + endif() unset( CMAKE_REQUIRED_LIBRARIES ) - message(STATUS "--> LAPACK routine dgesv is found: ${LAPACK_FOUND}.") + message(STATUS "--> LAPACK routine gesv is found: ${LAPACK_FOUND}.") ENDIF() if(LAPACK_FOUND) - message(STATUS "--> LAPACK supplied by user is WORKING, will use ${LAPACK_LIBRARIES}.") + message(STATUS "--> LAPACK supplied by user is WORKING, will use ${LAPACK_LIBRARIES}.") else(LAPACK_FOUND) if(USE_OPTIMIZED_LAPACK_BLAS) message(STATUS "--> Searching for optimized LAPACK and BLAS libraries on your machine.") find_package(LAPACK) ENDIF(USE_OPTIMIZED_LAPACK_BLAS) if(NOT LAPACK_FOUND) + unset(BLAS_LIBRARIES) # override "FALSE" variable that leaks from find_package(LAPACK) and Cache by defintion doesn't override message(STATUS "--> LAPACK and BLAS were not found. Reference LAPACK and BLAS will be downloaded and installed") + SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/liblapack${CMAKE_STATIC_LIBRARY_SUFFIX} CACHE STRING "LAPACK library" FORCE) + SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/libblas${CMAKE_STATIC_LIBRARY_SUFFIX} CACHE STRING "BLAS library" FORCE) + include(ExternalProject) ExternalProject_Add( lapack - URL http://www.netlib.org/lapack/lapack.tgz - CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=${SCALAPACK_BINARY_DIR} + URL https://www.netlib.org/lapack/lapack.tgz + CMAKE_ARGS + -DCMAKE_INSTALL_PREFIX:PATH=${SCALAPACK_BINARY_DIR} + -DBUILD_SINGLE:BOOL=${BUILD_SINGLE} + -DBUILD_DOUBLE:BOOL=${BUILD_DOUBLE} + -DBUILD_COMPLEX:BOOL=${BUILD_COMPLEX} + -DBUILD_COMPLEX16:BOOL=${BUILD_COMPLEX16} PREFIX ${SCALAPACK_BINARY_DIR}/dependencies + TLS_VERIFY true + BUILD_BYPRODUCTS ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} + ) + + install(FILES ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} + DESTINATION ${CMAKE_INSTALL_LIBDIR} ) - if (NOT MSVC) - SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.a CACHE STRING "LAPACK library" FORCE) - SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.a CACHE STRING "BLAS library" FORCE) - else () # MSVC - SET(LAPACK_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/liblapack.lib CACHE STRING "LAPACK library" FORCE) - SET(BLAS_LIBRARIES ${SCALAPACK_BINARY_DIR}/lib/libblas.lib CACHE STRING "BLAS library" FORCE) - endif () - ENDIF() + ENDIF() ENDIF() message(STATUS "BLAS library: ${BLAS_LIBRARIES}") @@ -240,33 +261,39 @@ append_subdir_files(src-C "SRC") if (NOT MSVC) add_library(scalapack ${blacs} ${tools} ${tools-C} ${extra_lapack} ${pblas} ${pblas-F} ${ptzblas} ${ptools} ${pbblas} ${redist} ${src} ${src-C}) - set_target_properties(scalapack PROPERTIES - VERSION ${SCALAPACK_VERSION} - SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR}) - target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_C) - scalapack_install_library(scalapack) else () # Need to separate Fortran and C Code OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON ) add_library(scalapack ${blacs} ${tools-C} ${pblas} ${ptools} ${redist} ${src-C}) - set_target_properties(scalapack PROPERTIES - VERSION ${SCALAPACK_VERSION} - SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR}) - target_link_libraries( scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_C) add_library(scalapack-F ${pblas-F} ${pbblas} ${ptzblas} ${tools} ${src} ${extra_lapack} ) set_target_properties(scalapack-F PROPERTIES VERSION ${SCALAPACK_VERSION} SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR}) - target_link_libraries( scalapack-F ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - scalapack_install_library(scalapack) + target_link_libraries( scalapack-F PRIVATE ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) scalapack_install_library(scalapack-F) endif () +include(CheckCCompilerFlag) +# C99+ default compilers such as Clang error without this +# test the non-no form, otherwise always succeeds +check_c_compiler_flag(-Wimplicit-function-declaration HAS_IMPLICIT_FUNC_FLAG) +if(HAS_IMPLICIT_FUNC_FLAG) + target_compile_options(scalapack PRIVATE $<$:-Wno-implicit-function-declaration>) +endif() + +target_link_libraries(scalapack PRIVATE ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_C) + +set_target_properties(scalapack PROPERTIES + VERSION ${SCALAPACK_VERSION} + SOVERSION ${SCALAPACK_VERSION_MAJOR}.${SCALAPACK_VERSION_MINOR}) + +scalapack_install_library(scalapack) + if(TARGET lapack) add_dependencies(scalapack lapack) endif() option(SCALAPACK_BUILD_TESTS "Build all tests of the ScaLAPACK library" ON) -if(${SCALAPACK_BUILD_TESTS}) +if(SCALAPACK_BUILD_TESTS) add_subdirectory(TESTING) endif() @@ -304,13 +331,6 @@ INCLUDE(CPack) export(TARGETS scalapack FILE scalapack-targets.cmake) -if( NOT LAPACK_FOUND ) - install(FILES - ${BLAS_LIBRARIES} ${LAPACK_LIBRARIES} - DESTINATION lib - ) -endif( NOT LAPACK_FOUND ) - configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-version.cmake.in ${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake @ONLY) configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-build.cmake.in @@ -327,8 +347,20 @@ configure_file(${SCALAPACK_SOURCE_DIR}/CMAKE/scalapack-config-install.cmake.in install(FILES ${SCALAPACK_BINARY_DIR}/CMakeFiles/scalapack-config.cmake ${SCALAPACK_BINARY_DIR}/scalapack-config-version.cmake - DESTINATION lib/cmake/scalapack-${SCALAPACK_VERSION} + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack-${SCALAPACK_VERSION} ) install(EXPORT scalapack-targets - DESTINATION lib/cmake/scalapack-${SCALAPACK_VERSION}) + DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/scalapack-${SCALAPACK_VERSION}) + + +include(FeatureSummary) + +add_feature_info(real32 ${BUILD_SINGLE} "Build with single precision") +add_feature_info(real64 ${BUILD_DOUBLE} "Build with double precision") +add_feature_info(complex32 ${BUILD_COMPLEX} "Build with complex precision") +add_feature_info(complex64 ${BUILD_COMPLEX16} "Build with complex16 precision") +add_feature_info(tests ${SCALAPACK_BUILD_TESTS} "Build tests") +add_feature_info(shared ${BUILD_SHARED_LIBS} "Build shared libraries") +message(STATUS "${PROJECT_NAME} features enabled:") +feature_summary(WHAT ENABLED_FEATURES) diff --git a/PBLAS/CMakeLists.txt b/PBLAS/CMakeLists.txt index e5e6c546..760ea27d 100644 --- a/PBLAS/CMakeLists.txt +++ b/PBLAS/CMakeLists.txt @@ -1,5 +1,6 @@ add_subdirectory(SRC) -if(${SCALAPACK_BUILD_TESTS}) + +if(SCALAPACK_BUILD_TESTS) add_subdirectory(TESTING) add_subdirectory(TIMING) endif() diff --git a/PBLAS/SRC/CMakeLists.txt b/PBLAS/SRC/CMakeLists.txt index e213ecaf..f97c61fc 100644 --- a/PBLAS/SRC/CMakeLists.txt +++ b/PBLAS/SRC/CMakeLists.txt @@ -10,58 +10,66 @@ set (APPBLAS pilaenv.f) set (PIBLAS1 picopy_.c) -set (PSBLAS1 psswap_.c psscal_.c pscopy_.c psaxpy_.c psdot_.c psnrm2_.c +set (PSBLAS1 psswap_.c psscal_.c pscopy_.c psaxpy_.c psdot_.c psnrm2_.c psasum_.c psamax_.c) -set (PCBLAS1 pcswap_.c pcscal_.c pcsscal_.c pccopy_.c pcaxpy_.c pcdotu_.c +set (PCBLAS1 pcswap_.c pcscal_.c pcsscal_.c pccopy_.c pcaxpy_.c pcdotu_.c pcdotc_.c pscnrm2_.c pscasum_.c pcamax_.c) -set (PDBLAS1 pdswap_.c pdscal_.c pdcopy_.c pdaxpy_.c pddot_.c pdnrm2_.c +set (PDBLAS1 pdswap_.c pdscal_.c pdcopy_.c pdaxpy_.c pddot_.c pdnrm2_.c pdasum_.c pdamax_.c) -set (PZBLAS1 pzswap_.c pzscal_.c pzdscal_.c pzcopy_.c pzaxpy_.c pzdotu_.c +set (PZBLAS1 pzswap_.c pzscal_.c pzdscal_.c pzcopy_.c pzaxpy_.c pzdotu_.c pzdotc_.c pdznrm2_.c pdzasum_.c pzamax_.c) #--------------------------------------------------------------------------- # Level 2 PBLAS. #--------------------------------------------------------------------------- -set (PSBLAS2 psgemv_.c psger_.c pssymv_.c pssyr_.c pssyr2_.c pstrmv_.c +set (PSBLAS2 psgemv_.c psger_.c pssymv_.c pssyr_.c pssyr2_.c pstrmv_.c pstrsv_.c psagemv_.c psasymv_.c psatrmv_.c) -set (PCBLAS2 pcgemv_.c pcgerc_.c pcgeru_.c pchemv_.c pcher_.c pcher2_.c +set (PCBLAS2 pcgemv_.c pcgerc_.c pcgeru_.c pchemv_.c pcher_.c pcher2_.c pctrmv_.c pctrsv_.c pcagemv_.c pcahemv_.c pcatrmv_.c) -set (PDBLAS2 pdgemv_.c pdger_.c pdsymv_.c pdsyr_.c pdsyr2_.c pdtrmv_.c +set (PDBLAS2 pdgemv_.c pdger_.c pdsymv_.c pdsyr_.c pdsyr2_.c pdtrmv_.c pdtrsv_.c pdagemv_.c pdasymv_.c pdatrmv_.c) -set (PZBLAS2 pzgemv_.c pzgerc_.c pzgeru_.c pzhemv_.c pzher_.c pzher2_.c +set (PZBLAS2 pzgemv_.c pzgerc_.c pzgeru_.c pzhemv_.c pzher_.c pzher2_.c pztrmv_.c pztrsv_.c pzagemv_.c pzahemv_.c pzatrmv_.c) #--------------------------------------------------------------------------- # Level 3 PBLAS. #--------------------------------------------------------------------------- -set (PSBLAS3 psgeadd_.c psgemm_.c pssymm_.c pssyr2k_.c pssyrk_.c pstradd_.c +set (PSBLAS3 psgeadd_.c psgemm_.c pssymm_.c pssyr2k_.c pssyrk_.c pstradd_.c pstran_.c pstrmm_.c pstrsm_.c) -set (PCBLAS3 pcgeadd_.c pcgemm_.c pchemm_.c pcher2k_.c pcherk_.c pcsymm_.c - pcsyr2k_.c pcsyrk_.c pctradd_.c pctranc_.c pctranu_.c pctrmm_.c +set (PCBLAS3 pcgeadd_.c pcgemm_.c pchemm_.c pcher2k_.c pcherk_.c pcsymm_.c + pcsyr2k_.c pcsyrk_.c pctradd_.c pctranc_.c pctranu_.c pctrmm_.c pctrsm_.c) -set (PDBLAS3 pdgeadd_.c pdgemm_.c pdsymm_.c pdsyr2k_.c pdsyrk_.c pdtradd_.c +set (PDBLAS3 pdgeadd_.c pdgemm_.c pdsymm_.c pdsyr2k_.c pdsyrk_.c pdtradd_.c pdtran_.c pdtrmm_.c pdtrsm_.c) -set (PZBLAS3 pzgeadd_.c pzgemm_.c pzhemm_.c pzher2k_.c pzherk_.c pzsymm_.c - pzsyr2k_.c pzsyrk_.c pztradd_.c pztranc_.c pztranu_.c pztrmm_.c +set (PZBLAS3 pzgeadd_.c pzgemm_.c pzhemm_.c pzher2k_.c pzherk_.c pzsymm_.c + pzsyr2k_.c pzsyrk_.c pztradd_.c pztranc_.c pztranu_.c pztrmm_.c pztrsm_.c) #--------------------------------------------------------------------------- -set (pblas - ${PIBLAS1} - ${PSBLAS1} ${PCBLAS1} ${PDBLAS1} ${PZBLAS1} - ${PSBLAS2} ${PCBLAS2} ${PDBLAS2} ${PZBLAS2} - ${PSBLAS3} ${PCBLAS3} ${PDBLAS3} ${PZBLAS3}) - -set (pblas-F ${APPBLAS} ) \ No newline at end of file +set(pblas ${PIBLAS1}) +if(BUILD_SINGLE) + list(APPEND pblas ${PSBLAS1} ${PSBLAS2} ${PSBLAS3}) +endif() +if(BUILD_DOUBLE) + list(APPEND pblas ${PDBLAS1} ${PDBLAS2} ${PDBLAS3}) +endif() +if(BUILD_COMPLEX) + list(APPEND pblas ${PCBLAS1} ${PCBLAS2} ${PCBLAS3}) +endif() +if(BUILD_COMPLEX16) + list(APPEND pblas ${PZBLAS1} ${PZBLAS2} ${PZBLAS3}) +endif() + +set (pblas-F ${APPBLAS} ) diff --git a/PBLAS/SRC/PBBLAS/CMakeLists.txt b/PBLAS/SRC/PBBLAS/CMakeLists.txt index eb48f95c..31fa5f6c 100644 --- a/PBLAS/SRC/PBBLAS/CMakeLists.txt +++ b/PBLAS/SRC/PBBLAS/CMakeLists.txt @@ -1,14 +1,25 @@ -set (PBSBLASAUX pbstran.f pbsmatadd.f pbstrsrt.f pbstrget.f +set (PBSBLASAUX pbstran.f pbsmatadd.f pbstrsrt.f pbstrget.f pbstrnv.f pbsvecadd.f pbstrst1.f) -set (PBCBLASAUX pbctran.f pbcmatadd.f pbctrsrt.f pbctrget.f +set (PBCBLASAUX pbctran.f pbcmatadd.f pbctrsrt.f pbctrget.f pbctrnv.f pbcvecadd.f pbctrst1.f) -set (PBDBLASAUX pbdtran.f pbdmatadd.f pbdtrsrt.f pbdtrget.f +set (PBDBLASAUX pbdtran.f pbdmatadd.f pbdtrsrt.f pbdtrget.f pbdtrnv.f pbdvecadd.f pbdtrst1.f) -set (PBZBLASAUX pbztran.f pbzmatadd.f pbztrsrt.f pbztrget.f +set (PBZBLASAUX pbztran.f pbzmatadd.f pbztrsrt.f pbztrget.f pbztrnv.f pbzvecadd.f pbztrst1.f) -set(pbblas - ${PBSBLASAUX} ${PBCBLASAUX} ${PBDBLASAUX} ${PBZBLASAUX}) +set(pbblas) +if(BUILD_SINGLE) + list(APPEND pbblas ${PBSBLASAUX}) +endif() +if(BUILD_DOUBLE) + list(APPEND pbblas ${PBDBLASAUX}) +endif() +if(BUILD_COMPLEX) + list(APPEND pbblas ${PBCBLASAUX}) +endif() +if(BUILD_COMPLEX16) + list(APPEND pbblas ${PBZBLASAUX}) +endif() diff --git a/PBLAS/SRC/PTOOLS/CMakeLists.txt b/PBLAS/SRC/PTOOLS/CMakeLists.txt index a66ee45d..95257dff 100644 --- a/PBLAS/SRC/PTOOLS/CMakeLists.txt +++ b/PBLAS/SRC/PTOOLS/CMakeLists.txt @@ -1,28 +1,28 @@ -set( ALLCTOOLS - PB_CGatherV.c PB_CInV.c PB_CInV2.c PB_CInOutV.c - PB_CInOutV2.c PB_COutV.c PB_CScatterV.c PB_CVMinit.c - PB_CVMloc.c PB_CVMnpq.c PB_CVMpack.c PB_CVMswp.c - PB_CVMupdate.c PB_CVMcontig.c PB_Cabort.c PB_Cainfog2l.c - PB_Cbinfo.c PB_Cchkmat.c PB_Cchkvec.c PB_Cconjg.c - PB_Cgetbuf.c PB_Cinfog2l.c PB_Citypeset.c PB_Cgcd.c - PB_Clcm.c PB_Cmalloc.c PB_Cnumroc.c PB_Cg2lrem.c - PB_Cindxg2p.c PB_Cnnxtroc.c PB_Cnpreroc.c PB_CpswapNN.c - PB_CpswapND.c PB_Cpdot11.c PB_CpdotNN.c PB_CpdotND.c - PB_CpaxpbyNN.c PB_CpaxpbyND.c PB_CpaxpbyDN.c PB_Cpaxpby.c - PB_CpgemmBC.c PB_CpgemmAC.c PB_CpgemmAB.c PB_Cplaprnt.c - PB_Cplapad.c PB_Cplapd2.c PB_Cplascal.c PB_Cplasca2.c - PB_Cplacnjg.c PB_Cpsym.c PB_CpsymmAB.c PB_CpsymmBC.c - PB_Cpsyr.c PB_CpsyrkA.c PB_CpsyrkAC.c PB_Cpsyr2.c - PB_Cpsyr2kA.c PB_Cpsyr2kAC.c PB_Cptrm.c PB_Cpgeadd.c - PB_Cptradd.c PB_Cptran.c PB_CptrmmAB.c PB_CptrmmB.c - PB_Cptrsm.c PB_CptrsmAB.c PB_CptrsmAB0.c PB_CptrsmAB1.c - PB_CptrsmB.c PB_Cptrsv.c PB_Ctop.c PB_Ctzahemv.c - PB_Ctzasymv.c PB_Ctzatrmv.c PB_Ctzhemm.c PB_Ctzhemv.c - PB_Ctzher.c PB_Ctzherk.c PB_Ctzher2.c PB_Ctzher2k.c - PB_Ctzsymm.c PB_Ctzsymv.c PB_Ctzsyr.c PB_Ctzsyrk.c - PB_Ctzsyr2.c PB_Ctzsyr2k.c PB_Ctztrmm.c PB_Ctztrmv.c - PB_Cwarn.c PB_freebuf_.c PB_topget_.c PB_topset_.c - PB_Cdescset.c PB_Cdescribe.c PB_CargFtoC.c PB_Cfirstnb.c +set( ALLCTOOLS + PB_CGatherV.c PB_CInV.c PB_CInV2.c PB_CInOutV.c + PB_CInOutV2.c PB_COutV.c PB_CScatterV.c PB_CVMinit.c + PB_CVMloc.c PB_CVMnpq.c PB_CVMpack.c PB_CVMswp.c + PB_CVMupdate.c PB_CVMcontig.c PB_Cabort.c PB_Cainfog2l.c + PB_Cbinfo.c PB_Cchkmat.c PB_Cchkvec.c PB_Cconjg.c + PB_Cgetbuf.c PB_Cinfog2l.c PB_Citypeset.c PB_Cgcd.c + PB_Clcm.c PB_Cmalloc.c PB_Cnumroc.c PB_Cg2lrem.c + PB_Cindxg2p.c PB_Cnnxtroc.c PB_Cnpreroc.c PB_CpswapNN.c + PB_CpswapND.c PB_Cpdot11.c PB_CpdotNN.c PB_CpdotND.c + PB_CpaxpbyNN.c PB_CpaxpbyND.c PB_CpaxpbyDN.c PB_Cpaxpby.c + PB_CpgemmBC.c PB_CpgemmAC.c PB_CpgemmAB.c PB_Cplaprnt.c + PB_Cplapad.c PB_Cplapd2.c PB_Cplascal.c PB_Cplasca2.c + PB_Cplacnjg.c PB_Cpsym.c PB_CpsymmAB.c PB_CpsymmBC.c + PB_Cpsyr.c PB_CpsyrkA.c PB_CpsyrkAC.c PB_Cpsyr2.c + PB_Cpsyr2kA.c PB_Cpsyr2kAC.c PB_Cptrm.c PB_Cpgeadd.c + PB_Cptradd.c PB_Cptran.c PB_CptrmmAB.c PB_CptrmmB.c + PB_Cptrsm.c PB_CptrsmAB.c PB_CptrsmAB0.c PB_CptrsmAB1.c + PB_CptrsmB.c PB_Cptrsv.c PB_Ctop.c PB_Ctzahemv.c + PB_Ctzasymv.c PB_Ctzatrmv.c PB_Ctzhemm.c PB_Ctzhemv.c + PB_Ctzher.c PB_Ctzherk.c PB_Ctzher2.c PB_Ctzher2k.c + PB_Ctzsymm.c PB_Ctzsymv.c PB_Ctzsyr.c PB_Ctzsyrk.c + PB_Ctzsyr2.c PB_Ctzsyr2k.c PB_Ctztrmm.c PB_Ctztrmv.c + PB_Cwarn.c PB_freebuf_.c PB_topget_.c PB_topset_.c + PB_Cdescset.c PB_Cdescribe.c PB_CargFtoC.c PB_Cfirstnb.c PB_Clastnb.c PB_Cspan.c) set( SCTOOLS PB_Cstypeset.c) @@ -33,4 +33,16 @@ set( CCTOOLS PB_Cctypeset.c) set( ZCTOOLS PB_Cztypeset.c) -set(ptools ${ALLCTOOLS} ${SCTOOLS} ${DCTOOLS} ${CCTOOLS} ${ZCTOOLS}) +set(ptools ${ALLCTOOLS}) +if(BUILD_SINGLE) + list(APPEND ptools ${SCTOOLS}) +endif() +if(BUILD_DOUBLE) + list(APPEND ptools ${DCTOOLS}) +endif() +if(BUILD_COMPLEX) + list(APPEND ptools ${CCTOOLS}) +endif() +if(BUILD_COMPLEX16) + list(APPEND ptools ${ZCTOOLS}) +endif() diff --git a/PBLAS/SRC/PTZBLAS/CMakeLists.txt b/PBLAS/SRC/PTZBLAS/CMakeLists.txt index a35a557b..c8b70ef1 100644 --- a/PBLAS/SRC/PTZBLAS/CMakeLists.txt +++ b/PBLAS/SRC/PTZBLAS/CMakeLists.txt @@ -1,48 +1,65 @@ -set (APBTZ +set (APBTZ pxerbla.f) -set (IPBTZ +set (IPBTZ immadd.f immdda.f immtadd.f immddat.f) -set (SPBTZ - svasum.f sset.f scshft.f srshft.f - svvdot.f smmadd.f smmcadd.f smmtadd.f - smmtcadd.f smmdda.f smmddac.f smmddat.f - smmddact.f stzpad.f stzpadcpy.f stzscal.f +set (SPBTZ + svasum.f sset.f scshft.f srshft.f + svvdot.f smmadd.f smmcadd.f smmtadd.f + smmtcadd.f smmdda.f smmddac.f smmddat.f + smmddact.f stzpad.f stzpadcpy.f stzscal.f sagemv.f sasymv.f satrmv.f) -set (SCPBTZ +set (SCPBTZ sasqrtb.f sascal.f) -set (CPBTZ - scvasum.f cset.f ccshft.f crshft.f - cvvdotu.f cvvdotc.f cmmadd.f cmmcadd.f - cmmtadd.f cmmtcadd.f cmmdda.f cmmddac.f - cmmddat.f cmmddact.f ctzpad.f ctzpadcpy.f - chescal.f ctzscal.f ctzcnjg.f cagemv.f - cahemv.f catrmv.f casymv.f csymv.f +set (CPBTZ + scvasum.f cset.f ccshft.f crshft.f + cvvdotu.f cvvdotc.f cmmadd.f cmmcadd.f + cmmtadd.f cmmtcadd.f cmmdda.f cmmddac.f + cmmddat.f cmmddact.f ctzpad.f ctzpadcpy.f + chescal.f ctzscal.f ctzcnjg.f cagemv.f + cahemv.f catrmv.f casymv.f csymv.f csyr.f csyr2.f) -set (DPBTZ - dvasum.f dset.f dcshft.f drshft.f - dvvdot.f dmmadd.f dmmcadd.f dmmtadd.f - dmmtcadd.f dmmdda.f dmmddac.f dmmddat.f - dmmddact.f dtzpad.f dtzpadcpy.f dtzscal.f +set (DPBTZ + dvasum.f dset.f dcshft.f drshft.f + dvvdot.f dmmadd.f dmmcadd.f dmmtadd.f + dmmtcadd.f dmmdda.f dmmddac.f dmmddat.f + dmmddact.f dtzpad.f dtzpadcpy.f dtzscal.f dagemv.f dasymv.f datrmv.f) -set (DZPBTZ +set (DZPBTZ dasqrtb.f dascal.f) -set (ZPBTZ - dzvasum.f zset.f zcshft.f zrshft.f - zvvdotu.f zvvdotc.f zmmadd.f zmmcadd.f - zmmtadd.f zmmtcadd.f zmmdda.f zmmddac.f - zmmddat.f zmmddact.f ztzpad.f ztzpadcpy.f - zhescal.f ztzscal.f ztzcnjg.f zagemv.f - zahemv.f zatrmv.f zasymv.f zsymv.f +set (ZPBTZ + dzvasum.f zset.f zcshft.f zrshft.f + zvvdotu.f zvvdotc.f zmmadd.f zmmcadd.f + zmmtadd.f zmmtcadd.f zmmdda.f zmmddac.f + zmmddat.f zmmddact.f ztzpad.f ztzpadcpy.f + zhescal.f ztzscal.f ztzcnjg.f zagemv.f + zahemv.f zatrmv.f zasymv.f zsymv.f zsyr.f zsyr2.f) -set(ptzblas - ${APBTZ} ${IPBTZ} ${SPBTZ} ${SCPBTZ} - ${CPBTZ} ${DPBTZ} ${DZPBTZ} ${ZPBTZ} ) +set(ptzblas ${APBTZ} ${IPBTZ}) +if(BUILD_SINGLE) + list(APPEND ptzblas ${SPBTZ}) +endif() +if(BUILD_SINGLE OR BUILD_COMPLEX) + list(APPEND ptzblas ${SCPBTZ}) +endif() +if(BUILD_COMPLEX) + list(APPEND ptzblas ${CPBTZ}) +endif() + +if(BUILD_DOUBLE) + list(APPEND ptzblas ${DPBTZ}) +endif() +if(BUILD_DOUBLE OR BUILD_COMPLEX16) + list(APPEND ptzblas ${DZPBTZ}) +endif() +if(BUILD_COMPLEX16) + list(APPEND ptzblas ${ZPBTZ}) +endif() diff --git a/PBLAS/TESTING/CMakeLists.txt b/PBLAS/TESTING/CMakeLists.txt index 613a19cd..9134ce0f 100644 --- a/PBLAS/TESTING/CMakeLists.txt +++ b/PBLAS/TESTING/CMakeLists.txt @@ -1,6 +1,12 @@ +if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + add_compile_options("$<$:-fallow-argument-mismatch;-std=legacy>") +endif() + file(COPY ../SRC/PTOOLS/PB_Cwarn.c DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) file(COPY ../SRC/PTOOLS/PB_Cabort.c DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set (PblasErrorHandler PB_Cwarn.c PB_Cabort.c) set (pbtcom pblastst.f ${PblasErrorHandler}) set (spbtcom psblastst.f slamch.f ${pbtcom}) @@ -13,67 +19,32 @@ set_property( APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas ) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/PBLAS/TESTING) - -file(COPY PCBLAS1TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PCBLAS2TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PCBLAS3TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PDBLAS1TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PDBLAS2TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PDBLAS3TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PSBLAS1TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PSBLAS2TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PSBLAS3TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PZBLAS1TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PZBLAS2TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PZBLAS3TST.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - - -add_executable(spb1tst psblas1tst.f ${spbtcom}) -add_executable(dpb1tst pdblas1tst.f ${dpbtcom}) -add_executable(cpb1tst pcblas1tst.f ${cpbtcom}) -add_executable(zpb1tst pzblas1tst.f ${zpbtcom}) - -add_executable(spb2tst psblas2tst.f ${spbtcom}) -add_executable(dpb2tst pdblas2tst.f ${dpbtcom}) -add_executable(cpb2tst pcblas2tst.f ${cpbtcom}) -add_executable(zpb2tst pzblas2tst.f ${zpbtcom}) - -add_executable(spb3tst psblas3tst.f ${spbtcom}) -add_executable(dpb3tst pdblas3tst.f ${dpbtcom}) -add_executable(cpb3tst pcblas3tst.f ${cpbtcom}) -add_executable(zpb3tst pzblas3tst.f ${zpbtcom}) - -target_link_libraries(spb1tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(dpb1tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(cpb1tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(zpb1tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(spb2tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(dpb2tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(cpb2tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(zpb2tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(spb3tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(dpb3tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(cpb3tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(zpb3tst scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -add_test(spb1tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./spb1tst) -add_test(dpb1tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./dpb1tst) -add_test(cpb1tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./cpb1tst) -add_test(zpb1tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./zpb1tst) - -add_test(spb2tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./spb2tst) -add_test(dpb2tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./dpb2tst) -add_test(cpb2tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./cpb2tst) -add_test(zpb2tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./zpb2tst) - -add_test(spb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./spb3tst) -add_test(dpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./dpb3tst) -add_test(cpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./cpb3tst) -add_test(zpb3tst ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./zpb3tst) - -if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory +function(_pblas_test name src) + add_executable(${name} ${src}) + target_link_libraries(${name} PRIVATE scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) + add_test(NAME ${name} + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} $ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endfunction() + +if(BUILD_SINGLE) + _pblas_test(spb1tst "psblas1tst.f;${spbtcom}") + _pblas_test(spb2tst "psblas2tst.f;${spbtcom}") + _pblas_test(spb3tst "psblas3tst.f;${spbtcom}") +endif() +if(BUILD_SINGLE AND BUILD_DOUBLE) + _pblas_test(dpb1tst "pdblas1tst.f;${dpbtcom}") + _pblas_test(dpb2tst "pdblas2tst.f;${dpbtcom}") + _pblas_test(dpb3tst "pdblas3tst.f;${dpbtcom}") +endif() +if(BUILD_COMPLEX) + _pblas_test(cpb1tst "pcblas1tst.f;${cpbtcom}") + _pblas_test(cpb2tst "pcblas2tst.f;${cpbtcom}") + _pblas_test(cpb3tst "pcblas3tst.f;${cpbtcom}") +endif() +if(BUILD_SINGLE AND BUILD_COMPLEX16) + _pblas_test(zpb1tst "pzblas1tst.f;${zpbtcom}") + _pblas_test(zpb2tst "pzblas2tst.f;${zpbtcom}") + _pblas_test(zpb3tst "pzblas3tst.f;${zpbtcom}") endif() diff --git a/PBLAS/TIMING/CMakeLists.txt b/PBLAS/TIMING/CMakeLists.txt index 97ad5475..dc3a01ba 100644 --- a/PBLAS/TIMING/CMakeLists.txt +++ b/PBLAS/TIMING/CMakeLists.txt @@ -1,79 +1,50 @@ +if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + add_compile_options("$<$:-fallow-argument-mismatch;-std=legacy>") +endif() + file(COPY ../SRC/PTOOLS/PB_Cwarn.c DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) file(COPY ../SRC/PTOOLS/PB_Cabort.c DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + set (PblasErrorHandler PB_Cwarn.c PB_Cabort.c) set (pbtcom pblastim.f ${PblasErrorHandler}) set (spbtcom psblastim.f ${pbtcom}) set (dpbtcom pdblastim.f ${pbtcom}) set (cpbtcom pcblastim.f ${pbtcom}) set (zpbtcom pzblastim.f ${pbtcom}) - + set_property( SOURCE ${PblasErrorHandler} - APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas + APPEND PROPERTY COMPILE_DEFINITIONS TestingPblas ) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/PBLAS/TIMING) - -file(COPY PCBLAS1TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PCBLAS2TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PCBLAS3TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PDBLAS1TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PDBLAS2TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PDBLAS3TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PSBLAS1TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PSBLAS2TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PSBLAS3TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PZBLAS1TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PZBLAS2TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY PZBLAS3TIM.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - - -add_executable(spb1tim psblas1tim.f ${spbtcom}) -add_executable(dpb1tim pdblas1tim.f ${dpbtcom}) -add_executable(cpb1tim pcblas1tim.f ${cpbtcom}) -add_executable(zpb1tim pzblas1tim.f ${zpbtcom}) - -add_executable(spb2tim psblas2tim.f ${spbtcom}) -add_executable(dpb2tim pdblas2tim.f ${dpbtcom}) -add_executable(cpb2tim pcblas2tim.f ${cpbtcom}) -add_executable(zpb2tim pzblas2tim.f ${zpbtcom}) - -add_executable(spb3tim psblas3tim.f ${spbtcom}) -add_executable(dpb3tim pdblas3tim.f ${dpbtcom}) -add_executable(cpb3tim pcblas3tim.f ${cpbtcom}) -add_executable(zpb3tim pzblas3tim.f ${zpbtcom}) - -target_link_libraries(spb1tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(dpb1tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(cpb1tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(zpb1tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(spb2tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(dpb2tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(cpb2tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(zpb2tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(spb3tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(dpb3tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(cpb3tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(zpb3tim scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -add_test(spb1tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./spb1tim) -add_test(dpb1tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./dpb1tim) -add_test(cpb1tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./cpb1tim) -add_test(zpb1tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./zpb1tim) - -add_test(spb2tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./spb2tim) -add_test(dpb2tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./dpb2tim) -add_test(cpb2tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./cpb2tim) -add_test(zpb2tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./zpb2tim) - -add_test(spb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./spb3tim) -add_test(dpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./dpb3tim) -add_test(cpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./cpb3tim) -add_test(zpb3tim ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./zpb3tim) +function(_pblas_test name src) + add_executable(${name} ${src}) + target_link_libraries(${name} PRIVATE scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) + add_test(NAME ${name} + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} $ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + ) +endfunction() -if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory +if(BUILD_SINGLE) + _pblas_test(spb1tim "psblas1tim.f;${spbtcom}") + _pblas_test(spb2tim "psblas2tim.f;${spbtcom}") + _pblas_test(spb3tim "psblas3tim.f;${spbtcom}") +endif() +if(BUILD_DOUBLE) + _pblas_test(dpb1tim "pdblas1tim.f;${dpbtcom}") + _pblas_test(dpb2tim "pdblas2tim.f;${dpbtcom}") + _pblas_test(dpb3tim "pdblas3tim.f;${dpbtcom}") +endif() +if(BUILD_COMPLEX) + _pblas_test(cpb1tim "pcblas1tim.f;${cpbtcom}") + _pblas_test(cpb2tim "pcblas2tim.f;${cpbtcom}") + _pblas_test(cpb3tim "pcblas3tim.f;${cpbtcom}") +endif() +if(BUILD_SINGLE AND BUILD_COMPLEX16) + _pblas_test(zpb1tim "pzblas1tim.f;${zpbtcom}") + _pblas_test(zpb2tim "pzblas2tim.f;${zpbtcom}") + _pblas_test(zpb3tim "pzblas3tim.f;${zpbtcom}") endif() diff --git a/REDIST/CMakeLists.txt b/REDIST/CMakeLists.txt index b70ba04b..7f053135 100644 --- a/REDIST/CMakeLists.txt +++ b/REDIST/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(SRC) -if(${SCALAPACK_BUILD_TESTS}) + +if(SCALAPACK_BUILD_TESTS) add_subdirectory(TESTING) endif() diff --git a/REDIST/SRC/CMakeLists.txt b/REDIST/SRC/CMakeLists.txt index bc01ee61..f6b98909 100644 --- a/REDIST/SRC/CMakeLists.txt +++ b/REDIST/SRC/CMakeLists.txt @@ -1,20 +1,31 @@ -set (ALLAUX +set (ALLAUX pgemraux.c) -set (IMRSRC +set (IMRSRC pigemr.c pigemr2.c pitrmr.c pitrmr2.c) -set (SMRSRC +set (SMRSRC psgemr.c psgemr2.c pstrmr.c pstrmr2.c) -set (CMRSRC +set (CMRSRC pcgemr.c pcgemr2.c pctrmr.c pctrmr2.c) -set (DMRSRC +set (DMRSRC pdgemr.c pdgemr2.c pdtrmr.c pdtrmr2.c) -set (ZMRSRC +set (ZMRSRC pzgemr.c pzgemr2.c pztrmr.c pztrmr2.c) - -set(redist ${ALLAUX} ${IMRSRC} ${SMRSRC} ${CMRSRC} ${DMRSRC} ${ZMRSRC}) +set(redist ${ALLAUX} ${IMRSRC}) +if(BUILD_SINGLE) + list(APPEND redist ${SMRSRC}) +endif() +if(BUILD_DOUBLE) + list(APPEND redist ${DMRSRC}) +endif() +if(BUILD_COMPLEX) + list(APPEND redist ${CMRSRC}) +endif() +if(BUILD_COMPLEX16) + list(APPEND redist ${ZMRSRC}) +endif() diff --git a/REDIST/TESTING/CMakeLists.txt b/REDIST/TESTING/CMakeLists.txt index 2775480a..5c7db3dd 100644 --- a/REDIST/TESTING/CMakeLists.txt +++ b/REDIST/TESTING/CMakeLists.txt @@ -1,41 +1,30 @@ -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/scalapack/REDIST/TESTING) - -file(COPY GEMR2D.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY TRMR2D.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - -add_executable(xigemr pigemrdrv.c) -add_executable(xsgemr psgemrdrv.c) -add_executable(xdgemr pdgemrdrv.c) -add_executable(xcgemr pcgemrdrv.c) -add_executable(xzgemr pzgemrdrv.c) - -add_executable(xitrmr pitrmrdrv.c) -add_executable(xstrmr pstrmrdrv.c) -add_executable(xdtrmr pdtrmrdrv.c) -add_executable(xctrmr pctrmrdrv.c) -add_executable(xztrmr pztrmrdrv.c) - -target_link_libraries(xigemr scalapack MPI::MPI_Fortran ) -target_link_libraries(xsgemr scalapack MPI::MPI_Fortran ) -target_link_libraries(xdgemr scalapack MPI::MPI_Fortran ) -target_link_libraries(xcgemr scalapack MPI::MPI_Fortran ) -target_link_libraries(xzgemr scalapack MPI::MPI_Fortran ) - -target_link_libraries(xitrmr scalapack MPI::MPI_Fortran ) -target_link_libraries(xstrmr scalapack MPI::MPI_Fortran ) -target_link_libraries(xdtrmr scalapack MPI::MPI_Fortran ) -target_link_libraries(xctrmr scalapack MPI::MPI_Fortran ) -target_link_libraries(xztrmr scalapack MPI::MPI_Fortran ) - -#add_test(xigemr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xigemr) -#add_test(xsgemr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xsgemr) -#add_test(xdgemr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xdgemr) -#add_test(xcgemr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xcgemr) -#add_test(xzgemr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xzgemr) - -#add_test(xitrmr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xitrmr) -#add_test(xstrmr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xstrmr) -#add_test(xdtrmr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xdtrmr) -#add_test(xctrmr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xctrmr) -#add_test(xztrmr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xztrmr) - +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) + +function(_redist_test name src) + add_executable(${name} ${src}) + target_link_libraries(${name} PRIVATE scalapack MPI::MPI_Fortran) + # add_test(NAME ${name} + # COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} $ + # WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + # ) +endfunction() + +_redist_test(xigemr pigemrdrv.c) +_redist_test(xitrmr pitrmrdrv.c) + +if(BUILD_SINGLE) + _redist_test(xsgemr psgemrdrv.c) + _redist_test(xstrmr pstrmrdrv.c) +endif() +if(BUILD_DOUBLE) + _redist_test(xdgemr pdgemrdrv.c) + _redist_test(xdtrmr pdtrmrdrv.c) +endif() +if(BUILD_COMPLEX) + _redist_test(xcgemr pcgemrdrv.c) + _redist_test(xctrmr pctrmrdrv.c) +endif() +if(BUILD_COMPLEX16) + _redist_test(xzgemr pzgemrdrv.c) + _redist_test(xztrmr pztrmrdrv.c) +endif() diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt index 7fa6a886..c49bd1c7 100644 --- a/SRC/CMakeLists.txt +++ b/SRC/CMakeLists.txt @@ -1,148 +1,171 @@ set (ALLAUX pjlaenv.f pilaenvx.f piparmq.f pilaver.f pmpim2.f pmpcol.f) -set (ALLAUX-C pbchkvect.c getpbbuf.c pcrot.c pslaiect.c pdlaiect.c pzrot.c slamov.c clamov.c dlamov.c zlamov.c) -set (SCLAUX - pslabad.f pslaed0.f pslaed1.f pslaed2.f pslaed3.f pslaedz.f - pslamch.f pslared1d.f pslasrt.f psstebz.f psstedc.f slapst.f slasrt2.f +set (ALLAUX-C pbchkvect.c getpbbuf.c) +if(BUILD_SINGLE) + list(APPEND ALLAUX-C pslaiect.c slamov.c) +endif() +if(BUILD_DOUBLE) + list(APPEND ALLAUX-C pdlaiect.c dlamov.c) +endif() +if(BUILD_COMPLEX) + list(APPEND ALLAUX-C pcrot.c clamov.c) +endif() +if(BUILD_COMPLEX16) + list(APPEND ALLAUX-C pzrot.c zlamov.c) +endif() + +set (SCLAUX + pslabad.f pslaed0.f pslaed1.f pslaed2.f pslaed3.f pslaedz.f + pslamch.f pslared1d.f pslasrt.f psstebz.f psstedc.f slapst.f slasrt2.f sstein2.f slar1va.f slarrb2.f slarrd2.f slarre2.f slarre2a.f slarrf2.f slarrv2.f sstegr2.f sstegr2a.f sstegr2b.f) -set (DZLAUX - pdlabad.f pdlaed0.f pdlaed1.f pdlaed2.f pdlaed3.f pdlaedz.f - pdlamch.f pdlared1d.f pdlasrt.f pdstebz.f pdstedc.f dlapst.f dlasrt2.f +set (DZLAUX + pdlabad.f pdlaed0.f pdlaed1.f pdlaed2.f pdlaed3.f pdlaedz.f + pdlamch.f pdlared1d.f pdlasrt.f pdstebz.f pdstedc.f dlapst.f dlasrt2.f dstein2.f dlar1va.f dlarrb2.f dlarrd2.f dlarre2.f dlarre2a.f dlarrf2.f dlarrv2.f dstegr2.f dstegr2a.f dstegr2b.f) -set (SLASRC - psdbsv.f psdbtrf.f psdbtrs.f psdbtrsv.f - psdtsv.f psdttrf.f psdttrs.f psdttrsv.f - psgbsv.f psgbtrf.f psgbtrs.f +set (SLASRC + psdbsv.f psdbtrf.f psdbtrs.f psdbtrsv.f + psdtsv.f psdttrf.f psdttrs.f psdttrsv.f + psgbsv.f psgbtrf.f psgbtrs.f psgebd2.f psgebrd.f psgecon.f pstrcon.f psgeequ.f psgehd2.f psgehrd.f - psgelq2.f psgelqf.f psgels.f psgeql2.f psgeqlf.f psgeqpf.f psgeqr2.f - psgeqrf.f psgerfs.f psgerq2.f psgerqf.f - psgesv.f psgesvd.f psgesvx.f psgetf2.f psgetrf.f psgetri.f psgetrs.f - psggqrf.f psggrqf.f pslabrd.f - pslacon.f pslacp2.f pslacpy.f pslahrd.f pslange.f pslanhs.f pslansy.f - pslantr.f pslapiv.f pslapv2.f pslaqge.f pslaqsy.f pslarf.f pslarfb.f - pslarfg.f pslarft.f pslase2.f pslaset.f pslascl.f pslassq.f pslaswp.f - pslatra.f pslatrd.f pslatrs.f pslauu2.f pslauum.f psorg2l.f psorg2r.f - psorgl2.f psorglq.f psorgql.f psorgqr.f psorgr2.f - psorgrq.f psorm2l.f psorm2r.f psormbr.f psormhr.f psorml2.f - psormlq.f psormql.f psormqr.f psormr2.f psormrq.f psormtr.f pspocon.f - pspbsv.f pspbtrf.f pspbtrs.f pspbtrsv.f - psptsv.f pspttrf.f pspttrs.f pspttrsv.f - pspoequ.f psporfs.f psposv.f psposvx.f pspotf2.f pspotrf.f pspotri.f - pspotrs.f psrscl.f psstein.f pssyev.f pssyevd.f pssyevx.f - pssygs2.f pssygst.f - pssygvx.f pssyngst.f pssyntrd.f pssyttrd.f pssytd2.f pssytrd.f - pstrti2.f pstrtri.f pstrtrs.f - pslaevswp.f - pslarzb.f pslarzt.f pslarz.f pslatrz.f pstzrzf.f psormr3.f psormrz.f - pslahqr.f pslaconsb.f pslacp3.f pslawil.f - pslasmsub.f pslared2d.f pslamr1d.f slaref.f slamsh.f slasorte.f ssteqr2.f + psgelq2.f psgelqf.f psgels.f psgeql2.f psgeqlf.f psgeqpf.f psgeqr2.f + psgeqrf.f psgerfs.f psgerq2.f psgerqf.f + psgesv.f psgesvd.f psgesvx.f psgetf2.f psgetrf.f psgetri.f psgetrs.f + psggqrf.f psggrqf.f pslabrd.f + pslacon.f pslacp2.f pslacpy.f pslahrd.f pslange.f pslanhs.f pslansy.f + pslantr.f pslapiv.f pslapv2.f pslaqge.f pslaqsy.f pslarf.f pslarfb.f + pslarfg.f pslarft.f pslase2.f pslaset.f pslascl.f pslassq.f pslaswp.f + pslatra.f pslatrd.f pslatrs.f pslauu2.f pslauum.f psorg2l.f psorg2r.f + psorgl2.f psorglq.f psorgql.f psorgqr.f psorgr2.f + psorgrq.f psorm2l.f psorm2r.f psormbr.f psormhr.f psorml2.f + psormlq.f psormql.f psormqr.f psormr2.f psormrq.f psormtr.f pspocon.f + pspbsv.f pspbtrf.f pspbtrs.f pspbtrsv.f + psptsv.f pspttrf.f pspttrs.f pspttrsv.f + pspoequ.f psporfs.f psposv.f psposvx.f pspotf2.f pspotrf.f pspotri.f + pspotrs.f psrscl.f psstein.f pssyev.f pssyevd.f pssyevx.f + pssygs2.f pssygst.f + pssygvx.f pssyngst.f pssyntrd.f pssyttrd.f pssytd2.f pssytrd.f + pstrti2.f pstrtri.f pstrtrs.f + pslaevswp.f + pslarzb.f pslarzt.f pslarz.f pslatrz.f pstzrzf.f psormr3.f psormrz.f + pslahqr.f pslaconsb.f pslacp3.f pslawil.f + pslasmsub.f pslared2d.f pslamr1d.f slaref.f slamsh.f slasorte.f ssteqr2.f sdbtf2.f sdbtrf.f sdttrf.f sdttrsv.f spttrsv.f strmvt.f pssyevr.f bslaapp.f bslaexc.f bstrexc.f pstrord.f pstrsen.f psgebal.f pshseqr.f pslamve.f pslaqr0.f pslaqr1.f pslaqr2.f pslaqr3.f pslaqr4.f pslaqr5.f psrot.f slaqr6.f) - -set (CLASRC - pcdbsv.f pcdbtrf.f pcdbtrs.f pcdbtrsv.f - pcdtsv.f pcdttrf.f pcdttrs.f pcdttrsv.f - pcgbsv.f pcgbtrf.f pcgbtrs.f + +set (CLASRC + pcdbsv.f pcdbtrf.f pcdbtrs.f pcdbtrsv.f + pcdtsv.f pcdttrf.f pcdttrs.f pcdttrsv.f + pcgbsv.f pcgbtrf.f pcgbtrs.f pcgebd2.f pcgebrd.f pcgecon.f pctrcon.f pcgeequ.f pcgehd2.f pcgehrd.f - pcgelq2.f pcgelqf.f pcgels.f pcgeql2.f pcgeqlf.f pcgeqpf.f pcgeqr2.f - pcgeqrf.f pcgerfs.f pcgerq2.f pcgerqf.f - pcgesv.f pcgesvd.f pcgesvx.f pcgetf2.f pcgetrf.f pcgetri.f pcgetrs.f - pcggqrf.f - pcggrqf.f pcheev.f pcheevd.f pcheevx.f pchegs2.f pchegst.f pchegvx.f - pchengst.f pchentrd.f pchettrd.f pchetd2.f - pchetrd.f pclabrd.f pclacon.f pclacgv.f pclacp2.f pclacpy.f pclahrd.f + pcgelq2.f pcgelqf.f pcgels.f pcgeql2.f pcgeqlf.f pcgeqpf.f pcgeqr2.f + pcgeqrf.f pcgerfs.f pcgerq2.f pcgerqf.f + pcgesv.f pcgesvd.f pcgesvx.f pcgetf2.f pcgetrf.f pcgetri.f pcgetrs.f + pcggqrf.f + pcggrqf.f pcheev.f pcheevd.f pcheevx.f pchegs2.f pchegst.f pchegvx.f + pchengst.f pchentrd.f pchettrd.f pchetd2.f + pchetrd.f pclabrd.f pclacon.f pclacgv.f pclacp2.f pclacpy.f pclahrd.f pclahqr.f pclaconsb.f pclasmsub.f pclacp3.f pclawil.f - pclange.f pclanhe.f pclanhs.f pclansy.f pclantr.f pclapiv.f pclapv2.f - pclaqge.f pclaqsy.f pclarf.f pclarfb.f pclarfc.f pclarfg.f pclarft.f - pclascl.f pclase2.f pclaset.f pclassq.f pclaswp.f pclatra.f pclatrd.f - pclatrs.f pclauu2.f pclauum.f pcpocon.f pcpoequ.f pcporfs.f pcposv.f - pcpbsv.f pcpbtrf.f pcpbtrs.f pcpbtrsv.f - pcptsv.f pcpttrf.f pcpttrs.f pcpttrsv.f - pcposvx.f pcpotf2.f pcpotrf.f pcpotri.f pcpotrs.f pcsrscl.f pcstein.f - pctrevc.f pctrti2.f pctrtri.f pctrtrs.f pcung2l.f pcung2r.f - pcungl2.f pcunglq.f pcungql.f pcungqr.f pcungr2.f pcungrq.f - pcunm2l.f pcunm2r.f pcunmbr.f pcunmhr.f pcunml2.f pcunmlq.f - pcunmql.f pcunmqr.f pcunmr2.f pcunmrq.f pcunmtr.f - pclaevswp.f - pclarzb.f pclarzt.f pclarz.f pclarzc.f pclatrz.f pctzrzf.f - pclattrs.f - pcunmr3.f pcunmrz.f pcmax1.f pscsum1.f pclamr1d.f - cdbtf2.f cdbtrf.f cdttrf.f cdttrsv.f cpttrsv.f csteqr2.f ctrmvt.f + pclange.f pclanhe.f pclanhs.f pclansy.f pclantr.f pclapiv.f pclapv2.f + pclaqge.f pclaqsy.f pclarf.f pclarfb.f pclarfc.f pclarfg.f pclarft.f + pclascl.f pclase2.f pclaset.f pclassq.f pclaswp.f pclatra.f pclatrd.f + pclatrs.f pclauu2.f pclauum.f pcpocon.f pcpoequ.f pcporfs.f pcposv.f + pcpbsv.f pcpbtrf.f pcpbtrs.f pcpbtrsv.f + pcptsv.f pcpttrf.f pcpttrs.f pcpttrsv.f + pcposvx.f pcpotf2.f pcpotrf.f pcpotri.f pcpotrs.f pcsrscl.f pcstein.f + pctrevc.f pctrti2.f pctrtri.f pctrtrs.f pcung2l.f pcung2r.f + pcungl2.f pcunglq.f pcungql.f pcungqr.f pcungr2.f pcungrq.f + pcunm2l.f pcunm2r.f pcunmbr.f pcunmhr.f pcunml2.f pcunmlq.f + pcunmql.f pcunmqr.f pcunmr2.f pcunmrq.f pcunmtr.f + pclaevswp.f + pclarzb.f pclarzt.f pclarz.f pclarzc.f pclatrz.f pctzrzf.f + pclattrs.f + pcunmr3.f pcunmrz.f pcmax1.f pscsum1.f pclamr1d.f + cdbtf2.f cdbtrf.f cdttrf.f cdttrsv.f cpttrsv.f csteqr2.f ctrmvt.f clamsh.f claref.f clanv2.f clahqr2.f pcheevr.f) -set (DLASRC - pddbsv.f pddbtrf.f pddbtrs.f pddbtrsv.f - pddtsv.f pddttrf.f pddttrs.f pddttrsv.f - pdgbsv.f pdgbtrf.f pdgbtrs.f +set (DLASRC + pddbsv.f pddbtrf.f pddbtrs.f pddbtrsv.f + pddtsv.f pddttrf.f pddttrs.f pddttrsv.f + pdgbsv.f pdgbtrf.f pdgbtrs.f pdgebd2.f pdgebrd.f pdgecon.f pdtrcon.f pdgeequ.f pdgehd2.f pdgehrd.f - pdgelq2.f pdgelqf.f pdgels.f pdgeql2.f pdgeqlf.f pdgeqpf.f pdgeqr2.f - pdgeqrf.f pdgerfs.f pdgerq2.f pdgerqf.f - pdgesv.f pdgesvd.f pdgesvx.f pdgetf2.f pdgetrf.f pdgetri.f pdgetrs.f - pdggqrf.f pdggrqf.f pdlabrd.f - pdlacon.f pdlacp2.f pdlacpy.f pdlahrd.f pdlange.f pdlanhs.f pdlansy.f - pdlantr.f pdlapiv.f pdlapv2.f pdlaqge.f pdlaqsy.f pdlarf.f pdlarfb.f - pdlarfg.f pdlarft.f pdlase2.f pdlaset.f pdlascl.f pdlassq.f pdlaswp.f - pdlatra.f pdlatrd.f pdlatrs.f pdlauu2.f pdlauum.f pdorg2l.f pdorg2r.f - pdorgl2.f pdorglq.f pdorgql.f pdorgqr.f pdorgr2.f - pdorgrq.f pdorm2l.f pdorm2r.f pdormbr.f pdormhr.f pdorml2.f - pdormlq.f pdormql.f pdormqr.f pdormr2.f pdormrq.f pdormtr.f pdpocon.f - pdpbsv.f pdpbtrf.f pdpbtrs.f pdpbtrsv.f - pdptsv.f pdpttrf.f pdpttrs.f pdpttrsv.f - pdpoequ.f pdporfs.f pdposv.f pdposvx.f pdpotf2.f pdpotrf.f pdpotri.f - pdpotrs.f pdrscl.f pdstein.f pdsyev.f pdsyevd.f pdsyevx.f - pdsygs2.f pdsygst.f - pdsygvx.f pdsyngst.f pdsyntrd.f pdsyttrd.f pdsytd2.f pdsytrd.f pdtrti2.f - pdtrtri.f pdtrtrs.f - pdlaevswp.f - pdlarzb.f pdlarzt.f pdlarz.f pdlatrz.f pdtzrzf.f pdormr3.f pdormrz.f - pdlahqr.f pdlaconsb.f pdlacp3.f pdlawil.f - pdlasmsub.f pdlared2d.f pdlamr1d.f dlaref.f dlamsh.f dlasorte.f dsteqr2.f + pdgelq2.f pdgelqf.f pdgels.f pdgeql2.f pdgeqlf.f pdgeqpf.f pdgeqr2.f + pdgeqrf.f pdgerfs.f pdgerq2.f pdgerqf.f + pdgesv.f pdgesvd.f pdgesvx.f pdgetf2.f pdgetrf.f pdgetri.f pdgetrs.f + pdggqrf.f pdggrqf.f pdlabrd.f + pdlacon.f pdlacp2.f pdlacpy.f pdlahrd.f pdlange.f pdlanhs.f pdlansy.f + pdlantr.f pdlapiv.f pdlapv2.f pdlaqge.f pdlaqsy.f pdlarf.f pdlarfb.f + pdlarfg.f pdlarft.f pdlase2.f pdlaset.f pdlascl.f pdlassq.f pdlaswp.f + pdlatra.f pdlatrd.f pdlatrs.f pdlauu2.f pdlauum.f pdorg2l.f pdorg2r.f + pdorgl2.f pdorglq.f pdorgql.f pdorgqr.f pdorgr2.f + pdorgrq.f pdorm2l.f pdorm2r.f pdormbr.f pdormhr.f pdorml2.f + pdormlq.f pdormql.f pdormqr.f pdormr2.f pdormrq.f pdormtr.f pdpocon.f + pdpbsv.f pdpbtrf.f pdpbtrs.f pdpbtrsv.f + pdptsv.f pdpttrf.f pdpttrs.f pdpttrsv.f + pdpoequ.f pdporfs.f pdposv.f pdposvx.f pdpotf2.f pdpotrf.f pdpotri.f + pdpotrs.f pdrscl.f pdstein.f pdsyev.f pdsyevd.f pdsyevx.f + pdsygs2.f pdsygst.f + pdsygvx.f pdsyngst.f pdsyntrd.f pdsyttrd.f pdsytd2.f pdsytrd.f pdtrti2.f + pdtrtri.f pdtrtrs.f + pdlaevswp.f + pdlarzb.f pdlarzt.f pdlarz.f pdlatrz.f pdtzrzf.f pdormr3.f pdormrz.f + pdlahqr.f pdlaconsb.f pdlacp3.f pdlawil.f + pdlasmsub.f pdlared2d.f pdlamr1d.f dlaref.f dlamsh.f dlasorte.f dsteqr2.f ddbtf2.f ddbtrf.f ddttrf.f ddttrsv.f dpttrsv.f dtrmvt.f pdsyevr.f bdlaapp.f bdlaexc.f bdtrexc.f dlaqr6.f pdtrord.f pdtrsen.f pdgebal.f pdhseqr.f pdlamve.f pdlaqr0.f pdlaqr1.f pdlaqr2.f pdlaqr3.f pdlaqr4.f pdlaqr5.f pdrot.f) -set (ZLASRC - pzdbsv.f pzdbtrf.f pzdbtrs.f pzdbtrsv.f - pzdtsv.f pzdttrf.f pzdttrs.f pzdttrsv.f - pzgbsv.f pzgbtrf.f pzgbtrs.f +set (ZLASRC + pzdbsv.f pzdbtrf.f pzdbtrs.f pzdbtrsv.f + pzdtsv.f pzdttrf.f pzdttrs.f pzdttrsv.f + pzgbsv.f pzgbtrf.f pzgbtrs.f pzgebd2.f pzgebrd.f pzgecon.f pztrcon.f pzgeequ.f pzgehd2.f pzgehrd.f - pzgelq2.f pzgelqf.f pzgels.f pzgeql2.f pzgeqlf.f pzgeqpf.f pzgeqr2.f - pzgeqrf.f pzgerfs.f pzgerq2.f pzgerqf.f - pzgesv.f pzgesvd.f pzgesvx.f pzgetf2.f pzgetrf.f pzgetri.f pzgetrs.f - pzggqrf.f - pzggrqf.f pzheev.f pzheevd.f pzheevx.f pzhegs2.f pzhegst.f pzhegvx.f - pzhengst.f pzhentrd.f pzhettrd.f pzhetd2.f - pzhetrd.f pzlabrd.f pzlacon.f pzlacgv.f pzlacp2.f pzlacpy.f pzlahrd.f - pzlahqr.f pzlaconsb.f pzlasmsub.f pzlacp3.f pzlawil.f - pzlange.f pzlanhe.f pzlanhs.f pzlansy.f pzlantr.f pzlapiv.f pzlapv2.f - pzlaqge.f pzlaqsy.f pzlarf.f pzlarfb.f pzlarfc.f pzlarfg.f pzlarft.f - pzlascl.f pzlase2.f pzlaset.f pzlassq.f pzlaswp.f pzlatra.f pzlatrd.f - pzlattrs.f - pzlatrs.f pzlauu2.f pzlauum.f pzpocon.f pzpoequ.f pzporfs.f pzposv.f - pzpbsv.f pzpbtrf.f pzpbtrs.f pzpbtrsv.f - pzptsv.f pzpttrf.f pzpttrs.f pzpttrsv.f - pzposvx.f pzpotf2.f pzpotrf.f pzpotri.f pzpotrs.f pzdrscl.f pzstein.f - pztrevc.f pztrti2.f pztrtri.f pztrtrs.f pzung2l.f pzung2r.f - pzungl2.f pzunglq.f pzungql.f pzungqr.f pzungr2.f pzungrq.f - pzunm2l.f pzunm2r.f pzunmbr.f pzunmhr.f pzunml2.f pzunmlq.f - pzunmql.f pzunmqr.f pzunmr2.f pzunmrq.f pzunmtr.f - pzlaevswp.f - pzlarzb.f pzlarzt.f pzlarz.f pzlarzc.f pzlatrz.f pztzrzf.f - pzunmr3.f pzunmrz.f pzmax1.f pdzsum1.f pzlamr1d.f - zdbtf2.f zdbtrf.f zdttrf.f zdttrsv.f zpttrsv.f zsteqr2.f ztrmvt.f + pzgelq2.f pzgelqf.f pzgels.f pzgeql2.f pzgeqlf.f pzgeqpf.f pzgeqr2.f + pzgeqrf.f pzgerfs.f pzgerq2.f pzgerqf.f + pzgesv.f pzgesvd.f pzgesvx.f pzgetf2.f pzgetrf.f pzgetri.f pzgetrs.f + pzggqrf.f + pzggrqf.f pzheev.f pzheevd.f pzheevx.f pzhegs2.f pzhegst.f pzhegvx.f + pzhengst.f pzhentrd.f pzhettrd.f pzhetd2.f + pzhetrd.f pzlabrd.f pzlacon.f pzlacgv.f pzlacp2.f pzlacpy.f pzlahrd.f + pzlahqr.f pzlaconsb.f pzlasmsub.f pzlacp3.f pzlawil.f + pzlange.f pzlanhe.f pzlanhs.f pzlansy.f pzlantr.f pzlapiv.f pzlapv2.f + pzlaqge.f pzlaqsy.f pzlarf.f pzlarfb.f pzlarfc.f pzlarfg.f pzlarft.f + pzlascl.f pzlase2.f pzlaset.f pzlassq.f pzlaswp.f pzlatra.f pzlatrd.f + pzlattrs.f + pzlatrs.f pzlauu2.f pzlauum.f pzpocon.f pzpoequ.f pzporfs.f pzposv.f + pzpbsv.f pzpbtrf.f pzpbtrs.f pzpbtrsv.f + pzptsv.f pzpttrf.f pzpttrs.f pzpttrsv.f + pzposvx.f pzpotf2.f pzpotrf.f pzpotri.f pzpotrs.f pzdrscl.f pzstein.f + pztrevc.f pztrti2.f pztrtri.f pztrtrs.f pzung2l.f pzung2r.f + pzungl2.f pzunglq.f pzungql.f pzungqr.f pzungr2.f pzungrq.f + pzunm2l.f pzunm2r.f pzunmbr.f pzunmhr.f pzunml2.f pzunmlq.f + pzunmql.f pzunmqr.f pzunmr2.f pzunmrq.f pzunmtr.f + pzlaevswp.f + pzlarzb.f pzlarzt.f pzlarz.f pzlarzc.f pzlatrz.f pztzrzf.f + pzunmr3.f pzunmrz.f pzmax1.f pdzsum1.f pzlamr1d.f + zdbtf2.f zdbtrf.f zdttrf.f zdttrsv.f zpttrsv.f zsteqr2.f ztrmvt.f zlamsh.f zlaref.f zlanv2.f zlahqr2.f pzheevr.f) - -set(src - ${ALLAUX} ${SCLAUX} ${DZLAUX} - ${SLASRC} ${CLASRC} ${DLASRC} ${ZLASRC} ) -set(src-C - ${ALLAUX-C} ) + +set(src ${ALLAUX}) +if(BUILD_SINGLE) + list(APPEND src ${SCLAUX} ${SLASRC}) +endif() +if(BUILD_DOUBLE) + list(APPEND src ${DZLAUX} ${DLASRC}) +endif() +if(BUILD_COMPLEX) + list(APPEND src ${CLASRC}) +endif() +if(BUILD_COMPLEX16) + list(APPEND src ${ZLASRC}) +endif() + +set(src-C ${ALLAUX-C}) diff --git a/TESTING/CMakeLists.txt b/TESTING/CMakeLists.txt index ae69afc6..a0bfb81d 100644 --- a/TESTING/CMakeLists.txt +++ b/TESTING/CMakeLists.txt @@ -1,110 +1,2 @@ add_subdirectory(LIN) add_subdirectory(EIG) - -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/TESTING) - -file(COPY BLLT.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY BLU.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY BRD.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY EVC.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY HRD.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY INV.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY LLT.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY LS.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY LU.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY NEP.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY QR.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY SEP.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY SEPR.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY SVD.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) -file(COPY TRD.dat DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) - -add_test(xslu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xslu) -add_test(xdlu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdlu) -add_test(xclu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xclu) -add_test(xzlu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzlu) - -add_test(xsdblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsdblu) -add_test(xddblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xddblu) -add_test(xcdblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcdblu) -add_test(xzdblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzdblu) - -add_test(xsdtlu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsdtlu) -add_test(xddtlu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xddtlu) -add_test(xcdtlu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcdtlu) -add_test(xzdtlu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzdtlu) - -add_test(xsgblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsgblu) -add_test(xdgblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdgblu) -add_test(xcgblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcgblu) -add_test(xzgblu ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzgblu) - -add_test(xsllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsllt) -add_test(xdllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdllt) -add_test(xcllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcllt) -add_test(xzllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzllt) - -add_test(xspbllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xspbllt) -add_test(xdpbllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdpbllt) -add_test(xcpbllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcpbllt) -add_test(xzpbllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzpbllt) - -add_test(xsptllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsptllt) -add_test(xdptllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdptllt) -add_test(xcptllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcptllt) -add_test(xzptllt ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzptllt) - -add_test(xsinv ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsinv) -add_test(xdinv ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdinv) -add_test(xcinv ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcinv) -add_test(xzinv ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzinv) - -add_test(xsqr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsqr) -add_test(xdqr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdqr) -add_test(xcqr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcqr) -add_test(xzqr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzqr) - -add_test(xsbrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsbrd) -add_test(xdbrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdbrd) -add_test(xcbrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcbrd) -add_test(xzbrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzbrd) - -add_test(xshrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xshrd) -add_test(xdhrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdhrd) -add_test(xchrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xchrd) -add_test(xzhrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzhrd) - -add_test(xstrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xstrd) -add_test(xdtrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdtrd) -add_test(xctrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xctrd) -add_test(xztrd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xztrd) - -add_test(xssvd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xssvd) -add_test(xdsvd ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xdsvd) - -add_test(xssep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xssep) -add_test(xdsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xdsep) -add_test(xcsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xcsep) -add_test(xzsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xzsep) - -add_test(xsgsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xsgsep) -add_test(xdgsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xdgsep) -add_test(xcgsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xcgsep) -add_test(xzgsep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xzgsep) - -add_test(xsnep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xsnep) -add_test(xdnep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdnep) -add_test(xcnep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcnep) -add_test(xznep ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xznep) - -add_test(xcevc ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xcevc) -add_test(xzevc ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xzevc) - -add_test(xssyevr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xssyevr) -add_test(xdsyevr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xdsyevr) -add_test(xcheevr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xcheevr) -add_test(xzheevr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 4 ${MPIEXEC_PREFLAGS} ./xzheevr) - -add_test(xshseqr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xshseqr) -add_test(xdhseqr ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} 2 ${MPIEXEC_PREFLAGS} ./xdhseqr) - diff --git a/TESTING/EIG/CMakeLists.txt b/TESTING/EIG/CMakeLists.txt index 69ebc224..c7e0aba9 100644 --- a/TESTING/EIG/CMakeLists.txt +++ b/TESTING/EIG/CMakeLists.txt @@ -1,102 +1,64 @@ -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/TESTING) +if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + add_compile_options("$<$:-fallow-argument-mismatch;-std=legacy>") +endif() + + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..) set (smatgen psmatgen.f pmatgeninc.f) set (dmatgen pdmatgen.f pmatgeninc.f) set (cmatgen pcmatgen.f pmatgeninc.f) set (zmatgen pzmatgen.f pmatgeninc.f) -add_executable(xsbrd psbrddriver.f psbrdinfo.f psgebdrv.f pslafchk.f ${smatgen}) -add_executable(xdbrd pdbrddriver.f pdbrdinfo.f pdgebdrv.f pdlafchk.f ${dmatgen}) -add_executable(xcbrd pcbrddriver.f pcbrdinfo.f pcgebdrv.f pclafchk.f ${cmatgen}) -add_executable(xzbrd pzbrddriver.f pzbrdinfo.f pzgebdrv.f pzlafchk.f ${zmatgen}) - -add_executable(xshrd pshrddriver.f pshrdinfo.f psgehdrv.f pslafchk.f ${smatgen}) -add_executable(xdhrd pdhrddriver.f pdhrdinfo.f pdgehdrv.f pdlafchk.f ${dmatgen}) -add_executable(xchrd pchrddriver.f pchrdinfo.f pcgehdrv.f pclafchk.f ${cmatgen}) -add_executable(xzhrd pzhrddriver.f pzhrdinfo.f pzgehdrv.f pzlafchk.f ${zmatgen}) - -add_executable(xstrd pstrddriver.f psttrdtester.f pslatran.f pstrdinfo.f pssytdrv.f pslafchk.f xpjlaenv.f ${smatgen}) -add_executable(xdtrd pdtrddriver.f pdttrdtester.f pdlatran.f pdtrdinfo.f pdsytdrv.f pdlafchk.f xpjlaenv.f ${dmatgen}) -add_executable(xctrd pctrddriver.f pcttrdtester.f pclatran.f pctrdinfo.f pchetdrv.f pclafchk.f xpjlaenv.f ${cmatgen}) -add_executable(xztrd pztrddriver.f pzttrdtester.f pzlatran.f pztrdinfo.f pzhetdrv.f pzlafchk.f xpjlaenv.f ${zmatgen}) - -add_executable(xssvd pssvddriver.f pslagge.f pssvdchk.f pssvdcmp.f pssvdtst.f ${smatgen}) -add_executable(xdsvd pdsvddriver.f pdlagge.f pdsvdchk.f pdsvdcmp.f pdsvdtst.f ${dmatgen}) - -add_executable(xssep psseptst.f pssepsubtst.f pssepchk.f pssepqtq.f pslagsy.f pslatms.f pslasizesep.f pslasizesyevx.f pssepdriver.f pssepreq.f pssepinfo.f pslasizesyev.f pssqpsubtst.f pslasizesqp.f pssdpsubtst.f ${smatgen}) -add_executable(xdsep pdseptst.f pdsepsubtst.f pdsepchk.f pdsepqtq.f pdlagsy.f pdlatms.f pdlasizesep.f pdlasizesyevx.f pdsepdriver.f pdsepreq.f pdsepinfo.f pdlasizesyev.f pdsqpsubtst.f pdlasizesqp.f pdsdpsubtst.f ${dmatgen}) -add_executable(xcsep pcseptst.f pcsepsubtst.f pcsepchk.f pcsepqtq.f pclagsy.f pclatms.f pclasizesep.f pclasizeheevx.f pcsepdriver.f pcsepreq.f pssepinfo.f pcsdpsubtst.f ${cmatgen}) -add_executable(xzsep pzseptst.f pzsepsubtst.f pzsepchk.f pzsepqtq.f pzlagsy.f pzlatms.f pzlasizesep.f pzlasizeheevx.f pzsepdriver.f pzsepreq.f pdsepinfo.f pzsdpsubtst.f ${zmatgen}) - -add_executable(xsgsep psgseptst.f psgsepsubtst.f psgsepchk.f pslagsy.f pslatms.f pslasizesyevx.f pslasizegsep.f pslasizesep.f psgsepdriver.f psgsepreq.f pssepinfo.f ${smatgen}) -add_executable(xdgsep pdgseptst.f pdgsepsubtst.f pdgsepchk.f pdlagsy.f pdlatms.f pdlasizesyevx.f pdlasizegsep.f pdlasizesep.f pdgsepdriver.f pdgsepreq.f pdsepinfo.f ${dmatgen}) -add_executable(xcgsep pcgseptst.f pcgsepsubtst.f pcgsepchk.f pclagsy.f pclatms.f pclasizegsep.f pclasizeheevx.f pclasizesep.f pcgsepdriver.f pcgsepreq.f pssepinfo.f ${cmatgen}) -add_executable(xzgsep pzgseptst.f pzgsepsubtst.f pzgsepchk.f pzlagsy.f pzlatms.f pzlasizegsep.f pzlasizeheevx.f pzlasizesep.f pzgsepdriver.f pzgsepreq.f pdsepinfo.f ${zmatgen}) - -add_executable(xsnep psnepdriver.f psnepinfo.f psnepfchk.f ${smatgen}) -add_executable(xdnep pdnepdriver.f pdnepinfo.f pdnepfchk.f ${dmatgen}) -add_executable(xcnep pcnepdriver.f pcnepinfo.f pcnepfchk.f ${cmatgen}) -add_executable(xznep pznepdriver.f pznepinfo.f pznepfchk.f ${zmatgen}) - -add_executable(xcevc pcevcdriver.f pcevcinfo.f pcget22.f ${cmatgen}) -add_executable(xzevc pzevcdriver.f pzevcinfo.f pzget22.f ${zmatgen}) - -add_executable(xssyevr pslasizesepr.f pslasizesyevr.f psseprdriver.f psseprreq.f psseprsubtst.f -pssepchk.f pssepqtq.f pslatms.f psseprtst.f pssepinfo.f pslagsy.f pslasizesep.f ${smatgen}) -add_executable(xdsyevr pdlasizesepr.f pdlasizesyevr.f pdseprdriver.f pdseprreq.f pdseprsubtst.f -pdsepchk.f pdsepqtq.f pdlatms.f pdseprtst.f pdsepinfo.f pdlagsy.f pdlasizesep.f ${dmatgen}) -add_executable(xcheevr pclasizesepr.f pclasizeheevr.f pcseprdriver.f pcseprreq.f pcseprsubtst.f -pcsepchk.f pcsepqtq.f pclatms.f pcseprtst.f pssepinfo.f pclagsy.f pclasizesep.f ${cmatgen}) -add_executable(xzheevr pzlasizesepr.f pzlasizeheevr.f pzseprdriver.f pzseprreq.f pzseprsubtst.f -pzsepchk.f pzsepqtq.f pzlatms.f pzseprtst.f pdsepinfo.f pzlagsy.f pzlasizesep.f ${zmatgen}) - -add_executable(xshseqr pshseqrdriver.f psmatgen2.f ${cmatgen}) -add_executable(xdhseqr pdhseqrdriver.f pdmatgen2.f ${cmatgen}) - -target_link_libraries(xsbrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdbrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcbrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzbrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xshrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdhrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xchrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzhrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xstrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdtrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xctrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xztrd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xssvd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdsvd scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xssep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsgsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdgsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcgsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzgsep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsnep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdnep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcnep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xznep scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xcevc scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzevc scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xssyevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdsyevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcheevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzheevr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xshseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdhseqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory +function(_eig_test name src N) + add_executable(${name} ${src}) + target_link_libraries(${name} PRIVATE scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) + + add_test(NAME ${name} + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${N} ${MPIEXEC_PREFLAGS} $ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.. + ) +endfunction() + +if(BUILD_SINGLE) + _eig_test(xsbrd "psbrddriver.f;psbrdinfo.f;psgebdrv.f;pslafchk.f;${smatgen}" 2) + _eig_test(xshrd "pshrddriver.f;pshrdinfo.f;psgehdrv.f;pslafchk.f;${smatgen}" 2) + _eig_test(xstrd "pstrddriver.f;psttrdtester.f;pslatran.f;pstrdinfo.f;pssytdrv.f;pslafchk.f;xpjlaenv.f;${smatgen}" 2) + _eig_test(xssvd "pssvddriver.f;pslagge.f;pssvdchk.f;pssvdcmp.f;pssvdtst.f;${smatgen}" 4) + _eig_test(xssep "psseptst.f;pssepsubtst.f;pssepchk.f;pssepqtq.f;pslagsy.f;pslatms.f;pslasizesep.f;pslasizesyevx.f;pssepdriver.f;pssepreq.f;pssepinfo.f;pslasizesyev.f;pssqpsubtst.f;pslasizesqp.f;pssdpsubtst.f;${smatgen}" 4) + _eig_test(xsgsep "psgseptst.f;psgsepsubtst.f;psgsepchk.f;pslagsy.f;pslatms.f;pslasizesyevx.f;pslasizegsep.f;pslasizesep.f;psgsepdriver.f;psgsepreq.f;pssepinfo.f;${smatgen}" 4) + _eig_test(xsnep "psnepdriver.f;psnepinfo.f;psnepfchk.f;${smatgen}" 2) + _eig_test(xssyevr "pslasizesepr.f;pslasizesyevr.f;psseprdriver.f;psseprreq.f;psseprsubtst.f;pssepchk.f;pssepqtq.f;pslatms.f;psseprtst.f;pssepinfo.f;pslagsy.f;pslasizesep.f;${smatgen}" 4) + _eig_test(xshseqr "pshseqrdriver.f;psmatgen2.f;${cmatgen}" 2) +endif() +if(BUILD_SINGLE AND BUILD_DOUBLE) + _eig_test(xdbrd "pdbrddriver.f;pdbrdinfo.f;pdgebdrv.f;pdlafchk.f;${dmatgen}" 2) + _eig_test(xdhrd "pdhrddriver.f;pdhrdinfo.f;pdgehdrv.f;pdlafchk.f;${dmatgen}" 2) + _eig_test(xdtrd "pdtrddriver.f;pdttrdtester.f;pdlatran.f;pdtrdinfo.f;pdsytdrv.f;pdlafchk.f;xpjlaenv.f;${dmatgen}" 2) + _eig_test(xdsvd "pdsvddriver.f;pdlagge.f;pdsvdchk.f;pdsvdcmp.f;pdsvdtst.f;${dmatgen}" 4) + _eig_test(xdsep "pdseptst.f;pdsepsubtst.f;pdsepchk.f;pdsepqtq.f;pdlagsy.f;pdlatms.f;pdlasizesep.f;pdlasizesyevx.f;pdsepdriver.f;pdsepreq.f;pdsepinfo.f;pdlasizesyev.f;pdsqpsubtst.f;pdlasizesqp.f;pdsdpsubtst.f;${dmatgen}" 4) + _eig_test(xdgsep "pdgseptst.f;pdgsepsubtst.f;pdgsepchk.f;pdlagsy.f;pdlatms.f;pdlasizesyevx.f;pdlasizegsep.f;pdlasizesep.f;pdgsepdriver.f;pdgsepreq.f;pdsepinfo.f;${dmatgen}" 4) + _eig_test(xdnep "pdnepdriver.f;pdnepinfo.f;pdnepfchk.f;${dmatgen}" 2) + _eig_test(xdsyevr "pdlasizesepr.f;pdlasizesyevr.f;pdseprdriver.f;pdseprreq.f;pdseprsubtst.f;pdsepchk.f;pdsepqtq.f;pdlatms.f;pdseprtst.f;pdsepinfo.f;pdlagsy.f;pdlasizesep.f;${dmatgen}" 4) + _eig_test(xdhseqr "pdhseqrdriver.f;pdmatgen2.f;${cmatgen}" 2) +endif() +if(BUILD_COMPLEX) + _eig_test(xcbrd "pcbrddriver.f;pcbrdinfo.f;pcgebdrv.f;pclafchk.f;${cmatgen}" 2) + _eig_test(xchrd "pchrddriver.f;pchrdinfo.f;pcgehdrv.f;pclafchk.f;${cmatgen}" 2) + _eig_test(xctrd "pctrddriver.f;pcttrdtester.f;pclatran.f;pctrdinfo.f;pchetdrv.f;pclafchk.f;xpjlaenv.f;${cmatgen}" 2) + _eig_test(xcsep "pcseptst.f;pcsepsubtst.f;pcsepchk.f;pcsepqtq.f;pclagsy.f;pclatms.f;pclasizesep.f;pclasizeheevx.f;pcsepdriver.f;pcsepreq.f;pssepinfo.f;pcsdpsubtst.f;${cmatgen}" 4) + _eig_test(xcgsep "pcgseptst.f;pcgsepsubtst.f;pcgsepchk.f;pclagsy.f;pclatms.f;pclasizegsep.f;pclasizeheevx.f;pclasizesep.f;pcgsepdriver.f;pcgsepreq.f;pssepinfo.f;${cmatgen}" 4) + _eig_test(xcnep "pcnepdriver.f;pcnepinfo.f;pcnepfchk.f;${cmatgen}" 2) + _eig_test(xcevc "pcevcdriver.f;pcevcinfo.f;pcget22.f;${cmatgen}" 2) + _eig_test(xcheevr "pclasizesepr.f;pclasizeheevr.f;pcseprdriver.f;pcseprreq.f;pcseprsubtst.f;pcsepchk.f;pcsepqtq.f;pclatms.f;pcseprtst.f;pssepinfo.f;pclagsy.f;pclasizesep.f;${cmatgen}" 4) +endif() +if(BUILD_SINGLE AND BUILD_COMPLEX16) + _eig_test(xzbrd "pzbrddriver.f;pzbrdinfo.f;pzgebdrv.f;pzlafchk.f;${zmatgen}" 2) + _eig_test(xzhrd "pzhrddriver.f;pzhrdinfo.f;pzgehdrv.f;pzlafchk.f;${zmatgen}" 2) + _eig_test(xztrd "pztrddriver.f;pzttrdtester.f;pzlatran.f;pztrdinfo.f;pzhetdrv.f;pzlafchk.f;xpjlaenv.f;${zmatgen}" 2) + _eig_test(xzsep "pzseptst.f;pzsepsubtst.f;pzsepchk.f;pzsepqtq.f;pzlagsy.f;pzlatms.f;pzlasizesep.f;pzlasizeheevx.f;pzsepdriver.f;pzsepreq.f;pdsepinfo.f;pzsdpsubtst.f;${zmatgen}" 4) + _eig_test(xzgsep "pzgseptst.f;pzgsepsubtst.f;pzgsepchk.f;pzlagsy.f;pzlatms.f;pzlasizegsep.f;pzlasizeheevx.f;pzlasizesep.f;pzgsepdriver.f;pzgsepreq.f;pdsepinfo.f;${zmatgen}" 4) + _eig_test(xznep "pznepdriver.f;pznepinfo.f;pznepfchk.f;${zmatgen}" 2) + _eig_test(xzevc "pzevcdriver.f;pzevcinfo.f;pzget22.f;${zmatgen}" 2) + _eig_test(xzheevr "pzlasizesepr.f;pzlasizeheevr.f;pzseprdriver.f;pzseprreq.f;pzseprsubtst.f;pzsepchk.f;pzsepqtq.f;pzlatms.f;pzseprtst.f;pdsepinfo.f;pzlagsy.f;pzlasizesep.f;${zmatgen}" 4) endif() diff --git a/TESTING/LIN/CMakeLists.txt b/TESTING/LIN/CMakeLists.txt index 481776f5..595e029a 100644 --- a/TESTING/LIN/CMakeLists.txt +++ b/TESTING/LIN/CMakeLists.txt @@ -1,4 +1,9 @@ -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${SCALAPACK_BINARY_DIR}/TESTING) +if (CMAKE_Fortran_COMPILER_ID STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + add_compile_options("$<$:-fallow-argument-mismatch;-std=legacy>") +endif() + + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/..) set (smatgen psmatgen.f pmatgeninc.f) set (dmatgen pdmatgen.f pmatgeninc.f) @@ -10,107 +15,63 @@ set (dlinchk pdlaschk.f pdlafchk.f) set (clinchk pclaschk.f pclafchk.f) set (zlinchk pzlaschk.f pzlafchk.f) -add_executable(xslu psludriver.f psluinfo.f psgetrrv.f ${smatgen} ${slinchk}) -add_executable(xdlu pdludriver.f pdluinfo.f pdgetrrv.f ${dmatgen} ${dlinchk}) -add_executable(xclu pcludriver.f pcluinfo.f pcgetrrv.f ${cmatgen} ${clinchk}) -add_executable(xzlu pzludriver.f pzluinfo.f pzgetrrv.f ${zmatgen} ${zlinchk}) - -add_executable(xsdblu psdbdriver.f psdbinfo.f psdblaschk.f psdbmv1.f psbmatgen.f ${smatgen}) -add_executable(xddblu pddbdriver.f pddbinfo.f pddblaschk.f pddbmv1.f pdbmatgen.f ${dmatgen}) -add_executable(xcdblu pcdbdriver.f pcdbinfo.f pcdblaschk.f pcdbmv1.f pcbmatgen.f ${cmatgen}) -add_executable(xzdblu pzdbdriver.f pzdbinfo.f pzdblaschk.f pzdbmv1.f pzbmatgen.f ${zmatgen}) - -add_executable(xsdtlu psdtdriver.f psdtinfo.f psdtlaschk.f psdbmv1.f psbmatgen.f ${smatgen}) -add_executable(xddtlu pddtdriver.f pddtinfo.f pddtlaschk.f pddbmv1.f pdbmatgen.f ${dmatgen}) -add_executable(xcdtlu pcdtdriver.f pcdtinfo.f pcdtlaschk.f pcdbmv1.f pcbmatgen.f ${cmatgen}) -add_executable(xzdtlu pzdtdriver.f pzdtinfo.f pzdtlaschk.f pzdbmv1.f pzbmatgen.f ${zmatgen}) - -add_executable(xsgblu psgbdriver.f psgbinfo.f psdblaschk.f psgbmv1.f psbmatgen.f ${smatgen}) -add_executable(xdgblu pdgbdriver.f pdgbinfo.f pddblaschk.f pdgbmv1.f pdbmatgen.f ${dmatgen}) -add_executable(xcgblu pcgbdriver.f pcgbinfo.f pcdblaschk.f pcgbmv1.f pcbmatgen.f ${cmatgen}) -add_executable(xzgblu pzgbdriver.f pzgbinfo.f pzdblaschk.f pzgbmv1.f pzbmatgen.f ${zmatgen}) - -add_executable(xsllt pslltdriver.f pslltinfo.f pspotrrv.f ${smatgen} ${slinchk}) -add_executable(xdllt pdlltdriver.f pdlltinfo.f pdpotrrv.f ${dmatgen} ${dlinchk}) -add_executable(xcllt pclltdriver.f pclltinfo.f pcpotrrv.f ${cmatgen} ${clinchk}) -add_executable(xzllt pzlltdriver.f pzlltinfo.f pzpotrrv.f ${zmatgen} ${zlinchk}) - -add_executable(xspbllt pspbdriver.f pspbinfo.f pspblaschk.f pspbmv1.f psbmatgen.f ${smatgen}) -add_executable(xdpbllt pdpbdriver.f pdpbinfo.f pdpblaschk.f pdpbmv1.f pdbmatgen.f ${dmatgen}) -add_executable(xcpbllt pcpbdriver.f pcpbinfo.f pcpblaschk.f pcpbmv1.f pcbmatgen.f ${cmatgen}) -add_executable(xzpbllt pzpbdriver.f pzpbinfo.f pzpblaschk.f pzpbmv1.f pzbmatgen.f ${zmatgen}) - -add_executable(xsptllt psptdriver.f psptinfo.f psptlaschk.f pspbmv1.f psbmatgen.f ${smatgen}) -add_executable(xdptllt pdptdriver.f pdptinfo.f pdptlaschk.f pdpbmv1.f pdbmatgen.f ${dmatgen}) -add_executable(xcptllt pcptdriver.f pcptinfo.f pcptlaschk.f pcpbmv1.f pcbmatgen.f ${cmatgen}) -add_executable(xzptllt pzptdriver.f pzptinfo.f pzptlaschk.f pzpbmv1.f pzbmatgen.f ${zmatgen}) - -add_executable(xsinv psinvdriver.f psinvinfo.f psinvchk.f ${smatgen}) -add_executable(xdinv pdinvdriver.f pdinvinfo.f pdinvchk.f ${dmatgen}) -add_executable(xcinv pcinvdriver.f pcinvinfo.f pcinvchk.f ${cmatgen}) -add_executable(xzinv pzinvdriver.f pzinvinfo.f pzinvchk.f ${zmatgen}) - -add_executable(xsqr psqrdriver.f psqrinfo.f psgeqrrv.f psgeqlrv.f psgelqrv.f psgerqrv.f pstzrzrv.f pslafchk.f ${smatgen}) -add_executable(xdqr pdqrdriver.f pdqrinfo.f pdgeqrrv.f pdgeqlrv.f pdgelqrv.f pdgerqrv.f pdtzrzrv.f pdlafchk.f ${dmatgen}) -add_executable(xcqr pcqrdriver.f pcqrinfo.f pcgeqrrv.f pcgeqlrv.f pcgelqrv.f pcgerqrv.f pctzrzrv.f pclafchk.f ${cmatgen}) -add_executable(xzqr pzqrdriver.f pzqrinfo.f pzgeqrrv.f pzgeqlrv.f pzgelqrv.f pzgerqrv.f pztzrzrv.f pzlafchk.f ${zmatgen}) - -add_executable(xsls pslsdriver.f pslsinfo.f psqrt13.f psqrt14.f psqrt16.f psqrt17.f ${smatgen}) -add_executable(xdls pdlsdriver.f pdlsinfo.f pdqrt13.f pdqrt14.f pdqrt16.f pdqrt17.f ${dmatgen}) -add_executable(xcls pclsdriver.f pclsinfo.f pcqrt13.f pcqrt14.f pcqrt16.f pcqrt17.f ${cmatgen}) -add_executable(xzls pzlsdriver.f pzlsinfo.f pzqrt13.f pzqrt14.f pzqrt16.f pzqrt17.f ${zmatgen}) - - -target_link_libraries(xslu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdlu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xclu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzlu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsdblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xddblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcdblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzdblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsdtlu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xddtlu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcdtlu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzdtlu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsgblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdgblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcgblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzgblu scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xspbllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdpbllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcpbllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzpbllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsptllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdptllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcptllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzptllt scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsinv scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdinv scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcinv scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzinv scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzqr scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -target_link_libraries(xsls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xdls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xcls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) -target_link_libraries(xzls scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) - -if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU" AND CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) - set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -std=legacy" ) # local to this directory +function(_lin_test name src) + set(N 2) + + add_executable(${name} ${src}) + target_link_libraries(${name} PRIVATE scalapack ${LAPACK_LIBRARIES} ${BLAS_LIBRARIES} MPI::MPI_Fortran) + + add_test(NAME ${name} + COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${N} ${MPIEXEC_PREFLAGS} $ + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/.. + ) +endfunction() + +if(BUILD_SINGLE) + _lin_test(xslu "psludriver.f;psluinfo.f;psgetrrv.f;${smatgen};${slinchk}") + _lin_test(xsdblu "psdbdriver.f;psdbinfo.f;psdblaschk.f;psdbmv1.f;psbmatgen.f;${smatgen}") + _lin_test(xsdtlu "psdtdriver.f;psdtinfo.f;psdtlaschk.f;psdbmv1.f;psbmatgen.f;${smatgen}") + _lin_test(xsgblu "psgbdriver.f;psgbinfo.f;psdblaschk.f;psgbmv1.f;psbmatgen.f;${smatgen}") + _lin_test(xsllt "pslltdriver.f;pslltinfo.f;pspotrrv.f;${smatgen};${slinchk}") + _lin_test(xspbllt "pspbdriver.f;pspbinfo.f;pspblaschk.f;pspbmv1.f;psbmatgen.f;${smatgen}") + _lin_test(xsptllt "psptdriver.f;psptinfo.f;psptlaschk.f;pspbmv1.f;psbmatgen.f;${smatgen}") + _lin_test(xsinv "psinvdriver.f;psinvinfo.f;psinvchk.f;${smatgen}") + _lin_test(xsqr "psqrdriver.f;psqrinfo.f;psgeqrrv.f;psgeqlrv.f;psgelqrv.f;psgerqrv.f;pstzrzrv.f;pslafchk.f;${smatgen}") + _lin_test(xsls "pslsdriver.f;pslsinfo.f;psqrt13.f;psqrt14.f;psqrt16.f;psqrt17.f;${smatgen}") +endif() +if(BUILD_SINGLE AND BUILD_DOUBLE) + _lin_test(xdlu "pdludriver.f;pdluinfo.f;pdgetrrv.f;${dmatgen};${dlinchk}") + _lin_test(xddblu "pddbdriver.f;pddbinfo.f;pddblaschk.f;pddbmv1.f;pdbmatgen.f;${dmatgen}") + _lin_test(xddtlu "pddtdriver.f;pddtinfo.f;pddtlaschk.f;pddbmv1.f;pdbmatgen.f;${dmatgen}") + _lin_test(xdgblu "pdgbdriver.f;pdgbinfo.f;pddblaschk.f;pdgbmv1.f;pdbmatgen.f;${dmatgen}") + _lin_test(xdllt "pdlltdriver.f;pdlltinfo.f;pdpotrrv.f;${dmatgen};${dlinchk}") + _lin_test(xdpbllt "pdpbdriver.f;pdpbinfo.f;pdpblaschk.f;pdpbmv1.f;pdbmatgen.f;${dmatgen}") + _lin_test(xdptllt "pdptdriver.f;pdptinfo.f;pdptlaschk.f;pdpbmv1.f;pdbmatgen.f;${dmatgen}") + _lin_test(xdinv "pdinvdriver.f;pdinvinfo.f;pdinvchk.f;${dmatgen}") + _lin_test(xdqr "pdqrdriver.f;pdqrinfo.f;pdgeqrrv.f;pdgeqlrv.f;pdgelqrv.f;pdgerqrv.f;pdtzrzrv.f;pdlafchk.f;${dmatgen}") + _lin_test(xdls "pdlsdriver.f;pdlsinfo.f;pdqrt13.f;pdqrt14.f;pdqrt16.f;pdqrt17.f;${dmatgen}") +endif() +if(BUILD_COMPLEX) + _lin_test(xclu "pcludriver.f;pcluinfo.f;pcgetrrv.f;${cmatgen};${clinchk}") + _lin_test(xcdblu "pcdbdriver.f;pcdbinfo.f;pcdblaschk.f;pcdbmv1.f;pcbmatgen.f;${cmatgen}") + _lin_test(xcdtlu "pcdtdriver.f;pcdtinfo.f;pcdtlaschk.f;pcdbmv1.f;pcbmatgen.f;${cmatgen}") + _lin_test(xcgblu "pcgbdriver.f;pcgbinfo.f;pcdblaschk.f;pcgbmv1.f;pcbmatgen.f;${cmatgen}") + _lin_test(xcllt "pclltdriver.f;pclltinfo.f;pcpotrrv.f;${cmatgen};${clinchk}") + _lin_test(xcpbllt "pcpbdriver.f;pcpbinfo.f;pcpblaschk.f;pcpbmv1.f;pcbmatgen.f;${cmatgen}") + _lin_test(xcptllt "pcptdriver.f;pcptinfo.f;pcptlaschk.f;pcpbmv1.f;pcbmatgen.f;${cmatgen}") + _lin_test(xcinv "pcinvdriver.f;pcinvinfo.f;pcinvchk.f;${cmatgen}") + _lin_test(xcqr "pcqrdriver.f;pcqrinfo.f;pcgeqrrv.f;pcgeqlrv.f;pcgelqrv.f;pcgerqrv.f;pctzrzrv.f;pclafchk.f;${cmatgen}") + _lin_test(xcls "pclsdriver.f;pclsinfo.f;pcqrt13.f;pcqrt14.f;pcqrt16.f;pcqrt17.f;${cmatgen}") +endif() +if(BUILD_SINGLE AND BUILD_COMPLEX16) + _lin_test(xzlu "pzludriver.f;pzluinfo.f;pzgetrrv.f;${zmatgen};${zlinchk}") + _lin_test(xzdblu "pzdbdriver.f;pzdbinfo.f;pzdblaschk.f;pzdbmv1.f;pzbmatgen.f;${zmatgen}") + _lin_test(xzdtlu "pzdtdriver.f;pzdtinfo.f;pzdtlaschk.f;pzdbmv1.f;pzbmatgen.f;${zmatgen}") + _lin_test(xzgblu "pzgbdriver.f;pzgbinfo.f;pzdblaschk.f;pzgbmv1.f;pzbmatgen.f;${zmatgen}") + _lin_test(xzllt "pzlltdriver.f;pzlltinfo.f;pzpotrrv.f;${zmatgen};${zlinchk}") + _lin_test(xzpbllt "pzpbdriver.f;pzpbinfo.f;pzpblaschk.f;pzpbmv1.f;pzbmatgen.f;${zmatgen}") + _lin_test(xzptllt "pzptdriver.f;pzptinfo.f;pzptlaschk.f;pzpbmv1.f;pzbmatgen.f;${zmatgen}") + _lin_test(xzinv "pzinvdriver.f;pzinvinfo.f;pzinvchk.f;${zmatgen}") + _lin_test(xzqr "pzqrdriver.f;pzqrinfo.f;pzgeqrrv.f;pzgeqlrv.f;pzgelqrv.f;pzgerqrv.f;pztzrzrv.f;pzlafchk.f;${zmatgen}") + _lin_test(xzls "pzlsdriver.f;pzlsinfo.f;pzqrt13.f;pzqrt14.f;pzqrt16.f;pzqrt17.f;${zmatgen}") endif() diff --git a/TOOLS/CMakeLists.txt b/TOOLS/CMakeLists.txt index 59ff4ec3..fcd266dd 100644 --- a/TOOLS/CMakeLists.txt +++ b/TOOLS/CMakeLists.txt @@ -1,18 +1,18 @@ add_subdirectory(LAPACK) set (ATOOLS - iceil.f ilacpy.f ilcm.f indxg2p.f indxg2l.f - indxl2g.f infog1l.f infog2l.f npreroc.f numroc.f - chk1mat.f pchkxmat.f sltimer.f desc_convert.f - descinit.f descset.f + iceil.f ilacpy.f ilcm.f indxg2p.f indxg2l.f + indxl2g.f infog1l.f infog2l.f npreroc.f numroc.f + chk1mat.f pchkxmat.f sltimer.f desc_convert.f + descinit.f descset.f SL_init.f) set (ITOOLS - picol2row.f pirow2col.f pilaprnt.f pitreecomb.f pifillpad.f + picol2row.f pirow2col.f pilaprnt.f pitreecomb.f pifillpad.f pichekpad.f pielset.f pielset2.f pielget.f) set (STOOLS - dsnrm2.f dsasum.f slatcpy.f ssdot.f smatadd.f + dsnrm2.f dsasum.f slatcpy.f ssdot.f smatadd.f psmatadd.f pscol2row.f psrow2col.f pslaprnt.f pstreecomb.f psfillpad.f pschekpad.f pselset.f pselset2.f pselget.f pslaread.f pslawrite.f) @@ -27,7 +27,7 @@ set (CTOOLS dscnrm2.f dscasum.f ccdotu.f ccdotc.f clatcpy.f cmatadd.f pcmatadd.f pccol2row.f pcrow2col.f pclaprnt.f pctreecomb.f pcfillpad.f pcchekpad.f pcelset.f pcelset2.f - pcelget.f + pcelget.f pclaread.f pclawrite.f) set (ZTOOLS @@ -36,9 +36,18 @@ set (ZTOOLS pzchekpad.f pzelset.f pzelset2.f pzelget.f pzlaread.f pzlawrite.f) -set(tools - ${ATOOLS} ${ITOOLS} ${STOOLS} ${DTOOLS} ${CTOOLS} ${ZTOOLS}) - -set(tools-C - reshape.c SL_gridreshape.c ) - +set(tools ${ATOOLS} ${ITOOLS}) +if(BUILD_SINGLE) + list(APPEND tools ${STOOLS}) +endif() +if(BUILD_DOUBLE) + list(APPEND tools ${DTOOLS}) +endif() +if(BUILD_COMPLEX) + list(APPEND tools ${CTOOLS}) +endif() +if(BUILD_COMPLEX16) + list(APPEND tools ${ZTOOLS}) +endif() + +set(tools-C reshape.c SL_gridreshape.c) diff --git a/TOOLS/LAPACK/CMakeLists.txt b/TOOLS/LAPACK/CMakeLists.txt index cd6944da..134df7d8 100644 --- a/TOOLS/LAPACK/CMakeLists.txt +++ b/TOOLS/LAPACK/CMakeLists.txt @@ -12,5 +12,22 @@ set (DMATGEN dlatms.f dlagge.f dlagsy.f dlarot.f) set (ZMATGEN zlarnv.f zlatm1.f zlatms.f zlagge.f zlaghe.f zlagsy.f zlarot.f zlarnd.f) -set (extra_lapack - ${ALLAUX} ${SCATGEN} ${SMATGEN} ${CMATGEN} ${DZATGEN} ${DMATGEN} ${ZMATGEN}) +set(extra_lapack ${ALLAUX}) +if(BUILD_SINGLE) + list(APPEND extra_lapack ${SMATGEN}) +endif() +if(BUILD_SINGLE OR BUILD_COMPLEX) + list(APPEND extra_lapack ${SCATGEN}) +endif() +if(BUILD_DOUBLE) + list(APPEND extra_lapack ${DMATGEN}) +endif() +if(BUILD_DOUBLE OR BUILD_COMPLEX16) + list(APPEND extra_lapack ${DZATGEN}) +endif() +if(BUILD_COMPLEX) + list(APPEND extra_lapack ${CMATGEN}) +endif() +if(BUILD_COMPLEX16) + list(APPEND extra_lapack ${ZMATGEN}) +endif()