Skip to content

Commit 95c4def

Browse files
committed
Merge branch '65-preparing-for-rc-2' into 'master'
Resolve "Preparing for rc-2" Closes #65 See merge request chase/chase-library/ChASE!89
2 parents 9afa354 + 1e499fc commit 95c4def

206 files changed

Lines changed: 34858 additions & 28604 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,14 @@ build
1616
*.out
1717
*.err
1818
/*install*/
19+
20+
# Python cache
21+
__pycache__/
22+
*.pyc
23+
*.pyo
24+
25+
# Temporary worktrees
26+
*_worktree/
27+
migrate_worktree/
28+
deploy_worktree/
29+
fix_worktree/

.gitlab-ci.yml

Lines changed: 68 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ stages:
66
- build
77
- test
88
- coverage
9-
# - upload
9+
- upload
1010

1111
.default_source_changes: &only_source_changes
1212
rules:
@@ -32,7 +32,7 @@ build_cpu:
3232
- cmake --version
3333
- mkdir -p build_cpu
3434
- cd build_cpu
35-
- env CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" FFLAGS="$FFLAGS --coverage" cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpifort -DCHASE_ENABLE_MIXED_PRECISION=ON -DENABLE_TESTS=ON -DMPI_RUN_ARGS="--allow-run-as-root" .. -DCMAKE_EXE_LINKER_FLAGS="-lgfortran -Wl,--copy-dt-needed-entries --coverage"
35+
- env CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" FFLAGS="$FFLAGS --coverage" cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpifort -DCHASE_ENABLE_MIXED_PRECISION=ON -DCHASE_ENABLE_TESTS=ON -DMPI_RUN_ARGS="--allow-run-as-root" .. -DCMAKE_EXE_LINKER_FLAGS="-lgfortran -Wl,--copy-dt-needed-entries --coverage"
3636
- make VERBOSE=1 -j4
3737
artifacts:
3838
paths:
@@ -75,7 +75,7 @@ build_gpu:
7575
- cmake --version
7676
- mkdir -p build_gpu
7777
- cd build_gpu
78-
- env CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" FFLAGS="$FFLAGS --coverage" cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpifort -DCHASE_ENABLE_MIXED_PRECISION=ON -DENABLE_TESTS=ON -DMPI_RUN="srun" .. -DCMAKE_EXE_LINKER_FLAGS="--coverage"
78+
- env CFLAGS="$CFLAGS --coverage" CXXFLAGS="$CXXFLAGS --coverage" FFLAGS="$FFLAGS --coverage" cmake -DCMAKE_C_COMPILER=mpicc -DCMAKE_CXX_COMPILER=mpicxx -DCMAKE_Fortran_COMPILER=mpifort -DCHASE_ENABLE_MIXED_PRECISION=ON -DCHASE_ENABLE_TESTS=ON -DMPI_RUN="srun" .. -DCMAKE_EXE_LINKER_FLAGS="--coverage"
7979
- make VERBOSE=1 -j8
8080
artifacts:
8181
paths:
@@ -109,7 +109,7 @@ test_gpu:
109109
- build_gpu/*
110110
expire_in: 1 week
111111

112-
coverage:
112+
coverage_generate:
113113
stage: coverage
114114
coverage: '/lines......: (\d+[.]\d+)/'
115115
dependencies:
@@ -120,4 +120,67 @@ coverage:
120120
<<: *only_source_changes
121121
script:
122122
- lcov --capture --directory ./build_gpu --output-file coverage.info
123-
- lcov --summary coverage.info
123+
124+
# Extract coverage number
125+
- |
126+
COV=$(lcov --summary coverage.info | grep -oP 'lines.*: \K\d+\.\d+')
127+
echo "Total coverage = ${COV}%"
128+
129+
# Choose badge color
130+
- |
131+
if (( $(echo "$COV < 70" | bc -l) )); then COLOR=red
132+
elif (( $(echo "$COV < 85" | bc -l) )); then COLOR=yellow
133+
else COLOR=brightgreen
134+
fi
135+
136+
# Create Shields-compatible JSON
137+
- |
138+
mkdir -p coverage
139+
cat <<EOF > coverage/coverage.json
140+
{
141+
"schemaVersion": 1,
142+
"label": "coverage (master)",
143+
"message": "${COV}%",
144+
"color": "${COLOR}"
145+
}
146+
EOF
147+
artifacts:
148+
paths:
149+
- coverage/coverage.json
150+
expire_in: 1 week
151+
152+
coverage_upload:
153+
stage: upload
154+
dependencies:
155+
- coverage_generate
156+
tags:
157+
- juwels_booster
158+
- jacamar
159+
- login
160+
- shell
161+
id_tokens:
162+
SITE_ID_TOKEN:
163+
aud: https://gitlab.jsc.fz-juelich.de
164+
<<: *only_source_changes
165+
script:
166+
- set -e
167+
- echo "Uploading coverage badge"
168+
169+
- git config --global user.name "ChASE Bot"
170+
- git config --global user.email "chase@fz-juelich.de"
171+
172+
- git clone https://oauth2:${BADGE_PUSH_TOKEN}@gitlab.jsc.fz-juelich.de/wu7/chase-coverage-badges.git badge_repo
173+
- cd badge_repo
174+
175+
- mkdir -p coverage
176+
- cp ../coverage/coverage.json coverage/coverage.json
177+
178+
- git add coverage/coverage.json
179+
- |
180+
if git diff --cached --quiet; then
181+
echo "Coverage unchanged, nothing to push"
182+
exit 0
183+
fi
184+
185+
- git commit -m "Update ChASE coverage badge"
186+
- git push origin main

CMakeLists.txt

Lines changed: 7 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- Mode: cmake -*-
22
cmake_minimum_required( VERSION 3.18 )
33

4-
project( ChASE LANGUAGES C CXX Fortran VERSION 1.6.1 )
4+
project( ChASE LANGUAGES C CXX Fortran VERSION 1.7.0 )
55
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
66
# ## algorithm ##
77

@@ -32,8 +32,12 @@ option(CHASE_SAVE_RESIDUALS "Print the residuals in an external file" OFF)
3232
option(CHASE_ENABLE_XGEEV_RAYLEIGHRITZ "Enable solving pseudo-hermitian problems with XGEEV cusolver" OFF)
3333
option(ChASE_DISPLAY_COND_V_SVD "Compute and display condition number of V from SVD" OFF)
3434
option(CHASE_QR_DOUBLE_PRECISION "Operate QR in Double Precision" ON)
35-
option(CHASE_PRINT_DEBUG "Print additional information for debugging purpose" OFF)
3635
option(CHASE_RR_DOUBLE_PRECISION "Operate HEEVD in RR for pseudo-hermitian matrices in Double Precision" OFF)
36+
option(CHASE_ENABLE_TESTS "Enable unit tests." OFF)
37+
38+
if(NOT CMAKE_BUILD_TYPE STREQUAL "Release")
39+
message(WARNING "For prodution, please consider CMAKE_BUILD_TYPE to be Release or RelWithDebInfo")
40+
endif()
3741

3842
if( CHASE_OUTPUT )
3943
target_compile_definitions( chase_algorithm INTERFACE "-DCHASE_OUTPUT" )
@@ -84,10 +88,6 @@ if(CHASE_SAVE_RESIDUALS)
8488
add_definitions(-DCHASE_SAVE_RESIDUALS)
8589
endif()
8690

87-
if(CHASE_PRINT_DEBUG)
88-
add_definitions(-DCHASE_PRINT_DEBUG)
89-
endif()
90-
9191
add_subdirectory(external)
9292
add_subdirectory(grid)
9393
add_subdirectory(linalg)
@@ -106,70 +106,7 @@ add_executable( "chase_driver_gpu" tests/noinput.cpp )
106106
target_link_libraries(chase_driver_gpu chase_gpu)
107107
endif()
108108

109-
#add_executable( "herm_chase_run_cpu" tests/dist_pseudo_noinput.cpp )
110-
#target_link_libraries("herm_chase_run_cpu" chase_cpu)
111-
112-
#add_executable( "pseudo_chase_run_cpu" tests/dist_pseudo_noinput.cpp )
113-
#target_link_libraries("pseudo_chase_run_cpu" chase_cpu)
114-
#target_compile_definitions( "pseudo_chase_run_cpu" PRIVATE USE_PSEUDO_HERMITIAN=1)
115-
116-
#if(TARGET chase_gpu)
117-
#add_executable("herm_chase_run_gpu" tests/dist_pseudo_noinput.cpp)
118-
#target_link_libraries("herm_chase_run_gpu" chase_gpu)
119-
#target_compile_definitions("herm_chase_run_gpu" INTERFACE "-DHAS_CUDA")
120-
121-
#add_executable("pseudo_chase_run_gpu" tests/dist_pseudo_noinput.cpp)
122-
#target_link_libraries("pseudo_chase_run_gpu" chase_gpu)
123-
#target_compile_definitions("pseudo_chase_run_gpu" PRIVATE USE_PSEUDO_HERMITIAN=1)
124-
#target_compile_definitions("pseudo_chase_run_gpu" INTERFACE "-DHAS_CUDA")
125-
#endif()
126-
127-
#if(TARGET pchase_cpu)
128-
#add_executable("herm_block_dist_chase_run_cpu" tests/dist_pseudo_noinput.cpp)
129-
#target_link_libraries("herm_block_dist_chase_run_cpu" pchase_cpu)
130-
#target_compile_definitions("herm_block_dist_chase_run_cpu" PRIVATE USE_MPI=1)
131-
132-
#add_executable("pseudo_block_dist_chase_run_cpu" tests/dist_pseudo_noinput.cpp)
133-
#target_link_libraries("pseudo_block_dist_chase_run_cpu" pchase_cpu)
134-
#target_compile_definitions("pseudo_block_dist_chase_run_cpu" PRIVATE USE_PSEUDO_HERMITIAN=1)
135-
#target_compile_definitions("pseudo_block_dist_chase_run_cpu" PRIVATE USE_MPI=1)
136-
137-
#add_executable("herm_cyclic_dist_chase_run_cpu" tests/dist_pseudo_noinput.cpp)
138-
#target_link_libraries("herm_cyclic_dist_chase_run_cpu" pchase_cpu)
139-
#target_compile_definitions("herm_cyclic_dist_chase_run_cpu" PRIVATE USE_BLOCKCYCLIC=1)
140-
#target_compile_definitions("herm_cyclic_dist_chase_run_cpu" PRIVATE USE_MPI=1)
141-
142-
#add_executable("pseudo_cyclic_dist_chase_run_cpu" tests/dist_pseudo_noinput.cpp )
143-
#target_link_libraries("pseudo_cyclic_dist_chase_run_cpu" pchase_cpu)
144-
#target_compile_definitions("pseudo_cyclic_dist_chase_run_cpu" PRIVATE USE_BLOCKCYCLIC=1)
145-
#target_compile_definitions("pseudo_cyclic_dist_chase_run_cpu" PRIVATE USE_PSEUDO_HERMITIAN=1)
146-
#target_compile_definitions("pseudo_cyclic_dist_chase_run_cpu" PRIVATE USE_MPI=1)
147-
#endif()
148-
149-
#if(TARGET pchase_gpu)
150-
#add_executable("herm_block_dist_chase_run_gpu" tests/dist_pseudo_noinput.cpp)
151-
#target_link_libraries("herm_block_dist_chase_run_gpu" pchase_gpu)
152-
#target_compile_definitions("herm_block_dist_chase_run_gpu" INTERFACE "-DHAS_NCCL -DHAS_CUDA")
153-
154-
#add_executable("pseudo_block_dist_chase_run_gpu" tests/dist_pseudo_noinput.cpp)
155-
#target_link_libraries("pseudo_block_dist_chase_run_gpu" pchase_gpu)
156-
#target_compile_definitions("pseudo_block_dist_chase_run_gpu" PRIVATE USE_PSEUDO_HERMITIAN=1)
157-
#target_compile_definitions("pseudo_block_dist_chase_run_gpu" INTERFACE "-DHAS_NCCL -DHAS_CUDA")
158-
159-
#add_executable("herm_cyclic_dist_chase_run_gpu" tests/dist_pseudo_noinput.cpp)
160-
#target_link_libraries("herm_cyclic_dist_chase_run_gpu" pchase_gpu)
161-
#target_compile_definitions("herm_cyclic_dist_chase_run_gpu" PRIVATE USE_BLOCKCYCLIC=1)
162-
#target_compile_definitions("herm_cyclic_dist_chase_run_gpu" INTERFACE "-DHAS_NCCL -DHAS_CUDA")
163-
164-
#add_executable("pseudo_cyclic_dist_chase_run_gpu" tests/dist_pseudo_noinput.cpp)
165-
#target_link_libraries("pseudo_cyclic_dist_chase_run_gpu" pchase_gpu)
166-
#target_compile_definitions("pseudo_cyclic_dist_chase_run_gpu" PRIVATE USE_BLOCKCYCLIC=1)
167-
#target_compile_definitions("pseudo_cyclic_dist_chase_run_gpu" PRIVATE USE_PSEUDO_HERMITIAN=1)
168-
#target_compile_definitions("pseudo_cyclic_dist_chase_run_gpu" INTERFACE "-DHAS_NCCL" "-DHAS_CUDA")
169-
#endif()
170-
171-
option(ENABLE_TESTS "Enable unit tests." OFF)
172-
if(ENABLE_TESTS)
109+
if(CHASE_ENABLE_TESTS)
173110
MESSAGE("Test enabled. Finding GoogleTests.")
174111
include(${CMAKE_SOURCE_DIR}/cmake/external/Gtest/FetchGtest.cmake)
175112
include(CTest)
@@ -186,39 +123,6 @@ if(CHASE_BUILD_WITH_DOCS)
186123
add_subdirectory("docs")
187124
endif()
188125

189-
#get_target_property(interface_defs mpi_grid_nccl INTERFACE_COMPILE_DEFINITIONS)
190-
#message("INTERFACE_COMPILE_DEFINITIONS: ${interface_defs}")
191-
192-
# List all dependencies (linked targets)
193-
#get_target_property(linked_libraries pchase_gpu INTERFACE_LINK_LIBRARIES)
194-
#message("linked_libraries: ${linked_libraries}")
195-
# Prepare a list to store definitions
196-
#set(all_inherited_defs "")
197-
198-
#foreach(dep ${linked_libraries})
199-
# Check if the dependency is a valid target
200-
# if(TARGET ${dep})
201-
# Get INTERFACE_COMPILE_DEFINITIONS from the dependency
202-
# get_target_property(dep_defs ${dep} INTERFACE_COMPILE_DEFINITIONS)
203-
204-
# Append to the list
205-
# if(dep_defs)
206-
# list(APPEND all_inherited_defs ${dep_defs})
207-
# endif()
208-
# endif()
209-
#endforeach()
210-
211-
# Remove duplicates (optional)
212-
#list(REMOVE_DUPLICATES all_inherited_defs)
213-
214-
# Print all inherited definitions
215-
#message("Inherited compile definitions: ${all_inherited_defs}")
216-
#get_target_property(linked_libraries blaspp INTERFACE_LINK_LIBRARIES)
217-
#message("Libraries linked by blaspp: ${linked_libraries}")
218-
#get_target_property(blas_library ${linked_libraries} IMPORTED_LOCATION)
219-
#message("BLAS library path: ${blas_library}")
220-
221-
222126
##installation
223127
install( TARGETS chase_algorithm
224128
EXPORT chase_targets

Impl/chase_cpu/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ target_include_directories(chase_cpu INTERFACE
77
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
88
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/Impl/chase_cpu>")
99

10-
target_compile_definitions(chase_cpu INTERFACE NO_MPI=1)
10+
# NO_MPI is not defined here to avoid conflicts when chase_c links to both serial and parallel targets
11+
# The interface layer (chase_c) will handle NO_MPI definition based on actual usage
1112

1213
install(TARGETS chase_cpu
1314
EXPORT chase_targets

0 commit comments

Comments
 (0)