-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
146 lines (118 loc) · 8.88 KB
/
CMakeLists.txt
File metadata and controls
146 lines (118 loc) · 8.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#[[
@brief Build Re::Solve functionality tests
@author Slaven Peles <peless@ornl.gov>
]]
# Build basic version test
add_executable(version.exe testVersion.cpp)
target_link_libraries(version.exe PRIVATE ReSolve)
# Build test for Krylov solvers
add_executable(rand_gmres_test.exe testRandGmres.cpp)
target_link_libraries(rand_gmres_test.exe PRIVATE ReSolve)
add_executable(sys_rand_gmres_test.exe testSysGmres.cpp)
target_link_libraries(sys_rand_gmres_test.exe PRIVATE ReSolve)
if(RESOLVE_USE_KLU)
# Build KLU+KLU test
add_executable(klu_klu_test.exe testKlu.cpp)
target_link_libraries(klu_klu_test.exe PRIVATE ReSolve)
if(RESOLVE_USE_GPU)
# Build KLU+Rf tests
add_executable(klu_rf_test.exe testRefactor.cpp)
target_link_libraries(klu_rf_test.exe PRIVATE ReSolve)
# System solver test with cusolver rf and iterative refinement
add_executable(sys_refactor_test.exe testSysRefactor.cpp)
target_link_libraries(sys_refactor_test.exe PRIVATE ReSolve)
endif(RESOLVE_USE_GPU)
if(RESOLVE_USE_CUDA)
# System solver test with GLU (to be subsumed in testSysRefactor.cpp)
add_executable(sys_glu_test.exe testSysGLU.cpp)
target_link_libraries(sys_glu_test.exe PRIVATE ReSolve)
endif(RESOLVE_USE_CUDA)
endif(RESOLVE_USE_KLU)
if(RESOLVE_USE_LUSOL)
add_executable(lusol_test.exe testLUSOL.cpp)
target_link_libraries(lusol_test.exe PRIVATE ReSolve)
endif()
# Install tests
set(installable_tests version.exe)
list(APPEND installable_tests rand_gmres_test.exe)
list(APPEND installable_tests sys_rand_gmres_test.exe)
if(RESOLVE_USE_KLU)
list(APPEND installable_tests klu_klu_test.exe)
if(RESOLVE_USE_GPU)
list(APPEND installable_tests klu_rf_test.exe
sys_refactor_test.exe)
endif(RESOLVE_USE_GPU)
if(RESOLVE_USE_CUDA)
list(APPEND installable_tests sys_glu_test.exe)
endif(RESOLVE_USE_CUDA)
endif()
if(RESOLVE_USE_LUSOL)
list(APPEND installable_tests lusol_test.exe)
endif()
install(TARGETS ${installable_tests}
RUNTIME DESTINATION bin/resolve/tests/functionality)
# Install directory with data files
install(DIRECTORY data DESTINATION bin/resolve/tests/functionality)
set(test_data_dir ${CMAKE_SOURCE_DIR}/tests/functionality)
set(sym_matrix_path /data/matrix_ACTIVSg2000_AC_)
set(sym_rhs_path /data/rhs_ACTIVSg2000_AC_ones)
set(asym_matrix_path /data/ScaleMicrogrid_Jacobian_N1000_)
set(asym_rhs_path /data/ScaleMicrogrid_Residual_N1000_ones_number)
add_test(NAME version COMMAND $<TARGET_FILE:version.exe>)
if(RESOLVE_USE_LUSOL)
add_test(NAME lusol_test COMMAND $<TARGET_FILE:lusol_test.exe> "${test_data_dir}")
endif()
# Krylov solvers tests (FGMRES)
add_test(NAME sys_rand_count_fgmres_cgs2_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "cgs2" "-s" "count")
add_test(NAME sys_rand_count_fgmres_mgs_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "mgs" "-s" "count")
add_test(NAME sys_rand_count_fgmres_mgs2sync_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "mgs_two_sync" "-s" "count")
add_test(NAME sys_rand_count_fgmres_mgspm_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "mgs_pm" "-s" "count")
add_test(NAME sys_rand_fwht_fgmres_cgs2_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "cgs2" "-s" "fwht")
add_test(NAME sys_rand_fwht_fgmres_mgs_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "mgs" "-s" "fwht")
add_test(NAME sys_rand_fwht_fgmres_mgs2sync_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "mgs_two_sync" "-s" "fwht")
add_test(NAME sys_rand_fwht_fgmres_mgspm_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "randgmres" "-g" "mgs_pm" "-s" "fwht")
add_test(NAME sys_fgmres_cgs2_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "fgmres" "-g" "cgs2")
add_test(NAME sys_fgmres_mgs_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "fgmres" "-g" "mgs")
add_test(NAME sys_fgmres_mgs2sync_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "fgmres" "-g" "mgs_two_sync")
add_test(NAME sys_fgmres_mgspm_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-i" "fgmres" "-g" "mgs_pm")
# Krylov solvers tests (GMRES)
add_test(NAME sys_rand_count_gmres_cgs2_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "cgs2" "-s" "count")
add_test(NAME sys_rand_count_gmres_mgs_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "mgs" "-s" "count")
add_test(NAME sys_rand_count_gmres_mgs2sync_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "mgs_two_sync" "-s" "count")
add_test(NAME sys_rand_count_gmres_mgspm_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "mgs_pm" "-s" "count")
add_test(NAME sys_rand_fwht_gmres_cgs2_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "cgs2" "-s" "fwht")
add_test(NAME sys_rand_fwht_gmres_mgs_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "mgs" "-s" "fwht")
add_test(NAME sys_rand_fwht_gmres_mgs2sync_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "mgs_two_sync" "-s" "fwht")
add_test(NAME sys_rand_fwht_gmres_mgspm_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "randgmres" "-g" "mgs_pm" "-s" "fwht")
add_test(NAME sys_gmres_cgs2_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "fgmres" "-g" "cgs2")
add_test(NAME sys_gmres_mgs_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "fgmres" "-g" "mgs")
add_test(NAME sys_gmres_mgs2sync_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "fgmres" "-g" "mgs_two_sync")
add_test(NAME sys_gmres_mgspm_test COMMAND $<TARGET_FILE:sys_rand_gmres_test.exe> "-x" "no" "-i" "fgmres" "-g" "mgs_pm")
# Randomized GMRES solvers tested without SystemSolver class
add_test(NAME rand_gmres_test COMMAND $<TARGET_FILE:rand_gmres_test.exe>)
if(RESOLVE_USE_KLU)
# Using KLU as refactorization solver
add_test(NAME klu_klu_test COMMAND $<TARGET_FILE:klu_klu_test.exe> "-d" "${test_data_dir}" "-m" "${sym_matrix_path}" "-r" "${sym_rhs_path}") # expected fail, tolerance too strict
add_test(NAME klu_klu_ir_test COMMAND $<TARGET_FILE:klu_klu_test.exe> "-d" "${test_data_dir}" "-m" "${sym_matrix_path}" "-r" "${sym_rhs_path}" "-i")
add_test(NAME klu_klu_asym_test COMMAND $<TARGET_FILE:klu_klu_test.exe> "-d" "${test_data_dir}" "-m" "${asym_matrix_path}" "-r" "${asym_rhs_path}")
add_test(NAME klu_klu_asym_ir_test COMMAND $<TARGET_FILE:klu_klu_test.exe> "-d" "${test_data_dir}" "-m" "${asym_matrix_path}" "-r" "${asym_rhs_path}" "-i") # expected fail, IR should not be used when tolerance is reached
# CUDA-SDK specific tests
if(RESOLVE_USE_CUDA)
add_test(NAME klu_rf_cuda_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}")
add_test(NAME klu_rf_ir_cuda_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}" "-i")
add_test(NAME klu_glu_cuda_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}" "-s" "glu")
add_test(NAME sys_refactor_cuda_test COMMAND $<TARGET_FILE:sys_refactor_test.exe> "${test_data_dir}" "-d" "${test_data_dir}" "-m" "${sym_matrix_path}" "-r" "${sym_rhs_path}")
add_test(NAME sys_refactor_cuda_asym_test COMMAND $<TARGET_FILE:sys_refactor_test.exe> "${test_data_dir}" "-d" "${test_data_dir}" "-m" "${asym_matrix_path}" "-r" "${asym_rhs_path}") # expected fail, IR should not be used when tolerance is reached
add_test(NAME sys_glu_test COMMAND $<TARGET_FILE:sys_glu_test.exe> "${test_data_dir}" "-d" "${test_data_dir}" "-m" "${sym_matrix_path}" "-r" "${sym_rhs_path}")
add_test(NAME sys_glu_asym_test COMMAND $<TARGET_FILE:sys_glu_test.exe> "${test_data_dir}" "-d" "${test_data_dir}" "-m" "${asym_matrix_path}" "-r" "${asym_rhs_path}")
endif(RESOLVE_USE_CUDA)
# ROCm specific tests
if(RESOLVE_USE_HIP)
add_test(NAME rocsolver_rf_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}")
add_test(NAME rocsolver_rf_m1_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}" "-m" "rocsparse_trisolve")
add_test(NAME rocsolver_rf_ir_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}" "-i")
add_test(NAME rocsolver_rf_ir_m1_test COMMAND $<TARGET_FILE:klu_rf_test.exe> "-d" "${test_data_dir}" "-i" "-m" "rocsparse_trisolve")
add_test(NAME sys_refactor_cuda_test COMMAND $<TARGET_FILE:sys_refactor_test.exe> "${test_data_dir}" "-d" "${test_data_dir}" "-m" "${sym_matrix_path}" "-r" "${sym_rhs_path}")
add_test(NAME sys_refactor_cuda_asym_test COMMAND $<TARGET_FILE:sys_refactor_test.exe> "${test_data_dir}" "-d" "${test_data_dir}" "-m" "${asym_matrix_path}" "-r" "${asym_rhs_path}") # expected fail, IR should not be used when tolerance is reached
endif(RESOLVE_USE_HIP)
endif(RESOLVE_USE_KLU)