11# -*- Mode: cmake -*-
2- cmake_minimum_required ( VERSION 3.8 )
2+ cmake_minimum_required ( VERSION 3.18 )
33
44project ( ChASE LANGUAGES C CXX Fortran VERSION 1.6.1 )
55set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules" )
@@ -28,7 +28,12 @@ option(CHASE_ENABLE_MPI_IO "Enable MPI IO to read Hamiltonian matrix from local"
2828option (CHASE_USE_NVTX "Enable NVTX for profiling" OFF )
2929option (CHASE_BUILD_WITH_EXAMPLES "Build the examples" OFF )
3030option (CHASE_BUILD_WITH_DOCS "Build the docs" OFF )
31+ option (CHASE_SAVE_RESIDUALS "Print the residuals in an external file" OFF )
32+ option (CHASE_ENABLE_XGEEV_RAYLEIGHRITZ "Enable solving pseudo-hermitian problems with XGEEV cusolver" OFF )
3133option (ChASE_DISPLAY_COND_V_SVD "Compute and display condition number of V from SVD" OFF )
34+ option (CHASE_QR_DOUBLE_PRECISION "Operate QR in Double Precision" ON )
35+ option (CHASE_PRINT_DEBUG "Print additional information for debugging purpose" OFF )
36+ option (CHASE_RR_DOUBLE_PRECISION "Operate HEEVD in RR for pseudo-hermitian matrices in Double Precision" OFF )
3237
3338if ( CHASE_OUTPUT )
3439 target_compile_definitions ( chase_algorithm INTERFACE "-DCHASE_OUTPUT" )
@@ -63,10 +68,26 @@ if(CHASE_USE_NVTX)
6368 target_compile_definitions ( chase_algorithm INTERFACE "-DUSE_NVTX" )
6469endif ()
6570
71+ if (CHASE_QR_DOUBLE_PRECISION)
72+ add_definitions (-DQR_DOUBLE_PRECISION )
73+ endif ()
74+
75+ if (CHASE_RR_DOUBLE_PRECISION)
76+ add_definitions (-DRR_DOUBLE_PRECISION )
77+ endif ()
78+
6679if (ChASE_DISPLAY_COND_V_SVD)
6780 add_definitions (-DChASE_DISPLAY_COND_V_SVD )
6881endif ()
6982
83+ if (CHASE_SAVE_RESIDUALS)
84+ add_definitions (-DCHASE_SAVE_RESIDUALS )
85+ endif ()
86+
87+ if (CHASE_PRINT_DEBUG)
88+ add_definitions (-DCHASE_PRINT_DEBUG )
89+ endif ()
90+
7091add_subdirectory (external )
7192add_subdirectory (grid )
7293add_subdirectory (linalg )
@@ -85,66 +106,66 @@ add_executable( "chase_driver_gpu" tests/noinput.cpp )
85106target_link_libraries (chase_driver_gpu chase_gpu )
86107endif ()
87108
88- #add_executable( "herm_chase_run_cpu" tests/dist_quasi_noinput .cpp )
109+ #add_executable( "herm_chase_run_cpu" tests/dist_pseudo_noinput .cpp )
89110#target_link_libraries("herm_chase_run_cpu" chase_cpu)
90111
91- #add_executable( "quasi_chase_run_cpu " tests/dist_quasi_noinput .cpp )
92- #target_link_libraries("quasi_chase_run_cpu " chase_cpu)
93- #target_compile_definitions( "quasi_chase_run_cpu " PRIVATE USE_QUASI_HERMITIAN =1)
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)
94115
95116#if(TARGET chase_gpu)
96- #add_executable("herm_chase_run_gpu" tests/dist_quasi_noinput .cpp)
117+ #add_executable("herm_chase_run_gpu" tests/dist_pseudo_noinput .cpp)
97118#target_link_libraries("herm_chase_run_gpu" chase_gpu)
98119#target_compile_definitions("herm_chase_run_gpu" INTERFACE "-DHAS_CUDA")
99120
100- #add_executable("quasi_chase_run_gpu " tests/dist_quasi_noinput .cpp)
101- #target_link_libraries("quasi_chase_run_gpu " chase_gpu)
102- #target_compile_definitions("quasi_chase_run_gpu " PRIVATE USE_QUASI_HERMITIAN =1)
103- #target_compile_definitions("quasi_chase_run_gpu " INTERFACE "-DHAS_CUDA")
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")
104125#endif()
105126
106127#if(TARGET pchase_cpu)
107- #add_executable("herm_block_dist_chase_run_cpu" tests/dist_quasi_noinput .cpp)
128+ #add_executable("herm_block_dist_chase_run_cpu" tests/dist_pseudo_noinput .cpp)
108129#target_link_libraries("herm_block_dist_chase_run_cpu" pchase_cpu)
109130#target_compile_definitions("herm_block_dist_chase_run_cpu" PRIVATE USE_MPI=1)
110131
111- #add_executable("quasi_block_dist_chase_run_cpu " tests/dist_quasi_noinput .cpp)
112- #target_link_libraries("quasi_block_dist_chase_run_cpu " pchase_cpu)
113- #target_compile_definitions("quasi_block_dist_chase_run_cpu " PRIVATE USE_QUASI_HERMITIAN =1)
114- #target_compile_definitions("quasi_block_dist_chase_run_cpu " PRIVATE USE_MPI=1)
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)
115136
116- #add_executable("herm_cyclic_dist_chase_run_cpu" tests/dist_quasi_noinput .cpp)
137+ #add_executable("herm_cyclic_dist_chase_run_cpu" tests/dist_pseudo_noinput .cpp)
117138#target_link_libraries("herm_cyclic_dist_chase_run_cpu" pchase_cpu)
118139#target_compile_definitions("herm_cyclic_dist_chase_run_cpu" PRIVATE USE_BLOCKCYCLIC=1)
119140#target_compile_definitions("herm_cyclic_dist_chase_run_cpu" PRIVATE USE_MPI=1)
120141
121- #add_executable("quasi_cyclic_dist_chase_run_cpu " tests/dist_quasi_noinput .cpp )
122- #target_link_libraries("quasi_cyclic_dist_chase_run_cpu " pchase_cpu)
123- #target_compile_definitions("quasi_cyclic_dist_chase_run_cpu " PRIVATE USE_BLOCKCYCLIC=1)
124- #target_compile_definitions("quasi_cyclic_dist_chase_run_cpu " PRIVATE USE_QUASI_HERMITIAN =1)
125- #target_compile_definitions("quasi_cyclic_dist_chase_run_cpu " PRIVATE USE_MPI=1)
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)
126147#endif()
127148
128149#if(TARGET pchase_gpu)
129- #add_executable("herm_block_dist_chase_run_gpu" tests/dist_quasi_noinput .cpp)
150+ #add_executable("herm_block_dist_chase_run_gpu" tests/dist_pseudo_noinput .cpp)
130151#target_link_libraries("herm_block_dist_chase_run_gpu" pchase_gpu)
131152#target_compile_definitions("herm_block_dist_chase_run_gpu" INTERFACE "-DHAS_NCCL -DHAS_CUDA")
132153
133- #add_executable("quasi_block_dist_chase_run_gpu " tests/dist_quasi_noinput .cpp)
134- #target_link_libraries("quasi_block_dist_chase_run_gpu " pchase_gpu)
135- #target_compile_definitions("quasi_block_dist_chase_run_gpu " PRIVATE USE_QUASI_HERMITIAN =1)
136- #target_compile_definitions("quasi_block_dist_chase_run_gpu " INTERFACE "-DHAS_NCCL -DHAS_CUDA")
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")
137158
138- #add_executable("herm_cyclic_dist_chase_run_gpu" tests/dist_quasi_noinput .cpp)
159+ #add_executable("herm_cyclic_dist_chase_run_gpu" tests/dist_pseudo_noinput .cpp)
139160#target_link_libraries("herm_cyclic_dist_chase_run_gpu" pchase_gpu)
140161#target_compile_definitions("herm_cyclic_dist_chase_run_gpu" PRIVATE USE_BLOCKCYCLIC=1)
141162#target_compile_definitions("herm_cyclic_dist_chase_run_gpu" INTERFACE "-DHAS_NCCL -DHAS_CUDA")
142163
143- #add_executable("quasi_cyclic_dist_chase_run_gpu " tests/dist_quasi_noinput .cpp)
144- #target_link_libraries("quasi_cyclic_dist_chase_run_gpu " pchase_gpu)
145- #target_compile_definitions("quasi_cyclic_dist_chase_run_gpu " PRIVATE USE_BLOCKCYCLIC=1)
146- #target_compile_definitions("quasi_cyclic_dist_chase_run_gpu " PRIVATE USE_QUASI_HERMITIAN =1)
147- #target_compile_definitions("quasi_cyclic_dist_chase_run_gpu " INTERFACE "-DHAS_NCCL" "-DHAS_CUDA")
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")
148169#endif()
149170
150171option (ENABLE_TESTS "Enable unit tests." OFF )
0 commit comments