Skip to content

Commit

Permalink
linking everything privately
Browse files Browse the repository at this point in the history
  • Loading branch information
ShatrovOA committed Oct 23, 2024
1 parent 378fde4 commit d840f2c
Show file tree
Hide file tree
Showing 6 changed files with 63 additions and 37 deletions.
45 changes: 35 additions & 10 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ name: dtfft workflow

on: [push]
jobs:
deploy:
open_mpi:
name: Open MPI with Coverage
runs-on: ubuntu-latest
steps:
- name: Get Requirements
Expand All @@ -12,9 +13,7 @@ jobs:
sudo apt-get -y install gfortran-10
sudo apt-get install libopenmpi-dev openmpi-bin
sudo apt-get install libfftw3-dev
export OMPI_FC=gfortran-10
export OMPI_CC=gcc-10
export OMPI_CXX=g++-10
export CTEST_OUTPUT_ON_FAILURE=1
- name: Checkout
uses: actions/checkout@v4
- name: Create Build Directory
Expand All @@ -28,14 +27,40 @@ jobs:
-DCMAKE_BUILD_TYPE=Debug \
-DDTFFT_RUNNING_CICD=on \
-DDTFFT_WITH_FFTW=on \
-DDTFFT_MPI_VENDOR=openmpi \
-DDTFFT_BUILD_C_CXX_API=on ..
make
ls -lah /home/runner/work/dtFFT/dtFFT/build/CMakeFiles/dtfft.dir/src/
# make install
# ls -lah /usr/local/lib | grep dtfft
# ls -lah /usr/local/include | grep dtfft
CTEST_OUTPUT_ON_FAILURE=1 make coverage
make coverage
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
token: ${{ secrets.CODECOV_TOKEN }}

mpich_persistent:
name: MPICH with persistent communications
runs-on: ubuntu-latest
steps:
- name: Get Requirements
run: |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get -q update
sudo apt-get -y install gfortran-14
sudo apt-get install mpich libmpich-dev
sudo apt-get install libfftw3-dev
export CTEST_OUTPUT_ON_FAILURE=1
- name: Checkout
uses: actions/checkout@v4
- name: Create Build Directory
run: mkdir build
- name: Setup and run tests
working-directory: ./build
run: |
cmake -DCMAKE_C_COMPILER=gcc-14 \
-DCMAKE_CXX_COMPILER=g++-14 \
-DCMAKE_Fortran_COMPILER=gfortran-14 \
-DCMAKE_BUILD_TYPE=Debug \
-DDTFFT_WITH_FFTW=on \
-DDTFFT_ENABLE_PERSISTENT_COMM=on \
-DDTFFT_BUILD_C_CXX_API=on ..
make
make coverage
23 changes: 12 additions & 11 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,6 @@ else()
endif()
add_compile_definitions(DTFFT_USE_MPI)
endif()
include_directories($<$<COMPILE_LANGUAGE:Fortran>:${MPI_Fortran_MODULE_DIR}>)
include_directories($<$<COMPILE_LANGUAGE:C,CXX>:${MPI_C_INCLUDE_DIRS}>)

include(CheckFortranSourceCompiles)
check_fortran_source_compiles("program test
Expand Down Expand Up @@ -75,10 +73,6 @@ endif()
set ( DTFFT_CONF_HEADER ${PROJECT_BINARY_DIR}/dtfft_config.h CACHE STRING "DTFFT Config header")
configure_file( ${PROJECT_SOURCE_DIR}/include/dtfft_config.h.in "${DTFFT_CONF_HEADER}" )

include_directories($<$<COMPILE_LANGUAGE:Fortran>:${PROJECT_SOURCE_DIR}/src/include>)
# include_directories($<$<COMPILE_LANGUAGE:C,CXX,Fortran>:${PROJECT_SOURCE_DIR}/include>)
# include_directories(${PROJECT_SOURCE_DIR}/include>)
include_directories(${PROJECT_BINARY_DIR})

# if ( DTFFT_WITH_VKFFT OR DTFFT_WITH_CUFFT )
# target_compile_definitions(dtfft PRIVATE DTFFT_WITH_CUDA)
Expand All @@ -88,15 +82,22 @@ if(DTFFT_BUILD_SHARED)
else()
add_library(dtfft STATIC)
endif()
target_include_directories(dtfft PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${PROJECT_SOURCE_DIR}/src/include>)
target_include_directories(dtfft PRIVATE ${PROJECT_BINARY_DIR})

set(DTFFT_MODULE_DIR ${PROJECT_BINARY_DIR}/mod)
set_target_properties(dtfft PROPERTIES Fortran_MODULE_DIRECTORY ${DTFFT_MODULE_DIR})
set_target_properties(dtfft PROPERTIES VERSION ${CMAKE_PROJECT_VERSION})
set(DTFFT_HEADER_DIR "${PROJECT_SOURCE_DIR}/include")
SET(DTFFT_HEADERS "${PROJECT_BINARY_DIR}/mod/dtfft.mod;${DTFFT_HEADER_DIR}/dtfft.f03")
SET(DTFFT_MODULE "${DTFFT_MODULE_DIR}/dtfft.mod")
SET(DTFFT_HEADERS "${DTFFT_MODULE};${DTFFT_HEADER_DIR}/dtfft.f03")
target_link_libraries(dtfft PRIVATE MPI::MPI_Fortran)
if(DTFFT_BUILD_C_CXX_API)
set(DTFFT_HEADERS "${DTFFT_HEADERS};${DTFFT_HEADER_DIR}/dtfft.h;${DTFFT_HEADER_DIR}/dtfft.hpp;${DTFFT_CONF_HEADER}")
target_link_libraries(dtfft ${MPI_CXX_LIBRARIES})
target_link_libraries(dtfft PRIVATE MPI::MPI_CXX)
endif()
set_target_properties(dtfft PROPERTIES PUBLIC_HEADER "${DTFFT_HEADERS}")
target_include_directories(dtfft INTERFACE $<INSTALL_INTERFACE:include> )
target_include_directories(dtfft INTERFACE $<INSTALL_INTERFACE:include>)

set(DTFFT_MEASURE_ITERS "2" CACHE STRING "Number of iterations to run in order to find best grid decomposition
when passing DTFFT_MEASURE or DTFFT_PATIENT to effort_flag parameter
Expand Down Expand Up @@ -145,7 +146,7 @@ if ( DTFFT_WITH_CALIPER )
find_package( caliper REQUIRED )
message(STATUS "Found caliper: ${caliper_DIR}")
target_compile_definitions(dtfft PRIVATE DTFFT_WITH_CALIPER)
target_link_libraries(dtfft caliper)
target_link_libraries(dtfft PRIVATE caliper)
endif()


Expand Down Expand Up @@ -188,7 +189,7 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
COMMAND mv "${CMAKE_BINARY_DIR}/*.gcov" "${PROJECT_SOURCE_DIR}/"
)

target_link_libraries(dtfft gcov)
target_link_libraries(dtfft PRIVATE gcov)
set_target_properties(dtfft
PROPERTIES
COMPILE_FLAGS "-g -O0 --coverage -fprofile-arcs -ftest-coverage"
Expand Down
9 changes: 0 additions & 9 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,4 @@
get_target_property(LIB_DIR dtfft BINARY_DIR)
set(MODULE_DIR ${LIB_DIR}/mod)

file(GLOB COMMON_SOURCES *.F90)
target_sources(dtfft PRIVATE ${COMMON_SOURCES})
target_sources(dtfft PRIVATE "dtfft_helpers.c")

set_target_properties(dtfft PROPERTIES Fortran_MODULE_DIRECTORY ${MODULE_DIR})

# target_include_directories(dtfft INTERFACE ${MODULE_DIR})
target_link_libraries(dtfft ${MPI_Fortran_LIBRARIES})
target_include_directories(dtfft PRIVATE include)
add_subdirectory(interfaces)
2 changes: 1 addition & 1 deletion src/interfaces/fft/fftw/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ SET( CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_SOURCE_DIR}/cmake" )
find_package(FFTW REQUIRED COMPONENTS FLOAT_LIB DOUBLE_LIB)

target_include_directories(dtfft PRIVATE ${FFTW_INCLUDE_DIRS})
target_link_libraries(dtfft ${FFTW_DOUBLE_LIB} ${FFTW_FLOAT_LIB})
target_link_libraries(dtfft PRIVATE ${FFTW_DOUBLE_LIB} ${FFTW_FLOAT_LIB})

target_sources(dtfft PRIVATE
dtfft_executor_fftw_m.F90
Expand Down
2 changes: 1 addition & 1 deletion src/interfaces/fft/mkl/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ message(STATUS "Imported oneMKL targets: ${MKL_IMPORTED_TARGETS}")

target_compile_options(dtfft PRIVATE $<TARGET_PROPERTY:MKL::MKL,INTERFACE_COMPILE_OPTIONS>)
target_include_directories(dtfft PRIVATE $<TARGET_PROPERTY:MKL::MKL,INTERFACE_INCLUDE_DIRECTORIES>)
target_link_libraries(dtfft $<LINK_ONLY:MKL::MKL>)
target_link_libraries(dtfft PRIVATE $<LINK_ONLY:MKL::MKL>)


target_sources(dtfft PRIVATE
Expand Down
19 changes: 14 additions & 5 deletions tests/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
include_directories($<$<COMPILE_LANGUAGE:Fortran>:${CMAKE_BINARY_DIR}/mod>)
include_directories(${PROJECT_SOURCE_DIR}/include)
file(GLOB TEST_SOURCES "fortran/*_f.F90")


if(DTFFT_BUILD_C_CXX_API)
file(GLOB TESTS_C_CXX_SOURCES "c/*.c*")
list(APPEND TEST_SOURCES ${TESTS_C_CXX_SOURCES})
Expand All @@ -17,16 +14,28 @@ endif()
# endif()

if(DTFFT_RUNNING_CICD)
set(FLAG_OVERSUBSCRIBE "--oversubscribe")
set(TESTS_MAX_PROC 8)

if ( DTFFT_MPI_VENDOR STREQUAL "openmpi")
set(FLAG_OVERSUBSCRIBE "--oversubscribe")
endif()
else()
set(TESTS_MAX_PROC ${MPIEXEC_MAX_NUMPROCS})
endif()

foreach(test ${TEST_SOURCES})
get_filename_component(test_name ${test} NAME_WLE)
get_filename_component(extension ${test} EXT)
add_executable(${test_name} ${test})
target_link_libraries(${test_name} dtfft)
target_link_libraries(${test_name} PRIVATE dtfft)
target_link_libraries(${test_name} PRIVATE MPI::MPI_Fortran)
target_include_directories(${test_name} PRIVATE ${PROJECT_BINARY_DIR})
target_include_directories(${test_name} PRIVATE ${PROJECT_SOURCE_DIR}/include)
target_include_directories(${test_name} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${PROJECT_SOURCE_DIR}/src/include>)
target_include_directories(${test_name} PRIVATE $<$<COMPILE_LANGUAGE:Fortran>:${DTFFT_MODULE_DIR}>)
if( extension STREQUAL ".cpp" )
target_link_libraries(${test_name} PRIVATE MPI::MPI_CXX)
endif()

foreach(nproc RANGE 1 ${TESTS_MAX_PROC} 1)
add_test(
Expand Down

0 comments on commit d840f2c

Please sign in to comment.