diff --git a/CMakeLists.txt b/CMakeLists.txt index bfa893c..9cf22f2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,34 +5,30 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules") add_executable(heatdis_resil) add_executable(heatdis_veloc) -add_executable(heatdis_restart_resil) -add_executable(heatdis_restart_veloc) +add_executable(heatdis_synthesis_benchmark) add_subdirectory(src) find_package(MPI REQUIRED) target_link_libraries(heatdis_resil PRIVATE MPI::MPI_CXX) target_link_libraries(heatdis_veloc PRIVATE MPI::MPI_CXX) -target_link_libraries(heatdis_restart_resil PRIVATE MPI::MPI_CXX) -target_link_libraries(heatdis_restart_veloc PRIVATE MPI::MPI_CXX) +target_link_libraries(heatdis_synthesis_benchmark PRIVATE MPI::MPI_CXX) find_package(Kokkos REQUIRED) target_link_libraries(heatdis_resil PRIVATE Kokkos::kokkos) target_link_libraries(heatdis_veloc PRIVATE Kokkos::kokkos) -target_link_libraries(heatdis_restart_resil PRIVATE Kokkos::kokkos) -target_link_libraries(heatdis_restart_veloc PRIVATE Kokkos::kokkos) +target_link_libraries(heatdis_synthesis_benchmark PRIVATE Kokkos::kokkos) find_package(resilience REQUIRED) target_link_libraries(heatdis_resil PRIVATE Kokkos::resilience) -target_link_libraries(heatdis_restart_resil PRIVATE Kokkos::resilience) +target_link_libraries(heatdis_synthesis_benchmark PRIVATE Kokkos::resilience) find_package(VeloC REQUIRED) target_link_libraries(heatdis_veloc PRIVATE veloc::veloc) -target_link_libraries(heatdis_restart_veloc PRIVATE veloc::veloc) add_subdirectory(tpl) # Install rules include(GNUInstallDirs) -install(TARGETS heatdis_resil heatdis_veloc heatdis_restart_resil heatdis_restart_veloc) +install(TARGETS heatdis_resil heatdis_veloc heatdis_synthesis_benchmark) diff --git a/cmake/Modules/FindVeloC.cmake b/cmake/Modules/FindVeloC.cmake index e263a53..11b5643 100644 --- a/cmake/Modules/FindVeloC.cmake +++ b/cmake/Modules/FindVeloC.cmake @@ -1,44 +1,42 @@ find_package(MPI) find_path(_veloc_root - NAMES include/veloc.h - HINTS $ENV{VeloC_ROOT} ${VeloC_ROOT} ${VeloC_DIR} - ) + NAMES include/veloc.h + HINTS $ENV{VeloC_ROOT} ${VeloC_ROOT} ${VeloC_DIR} + ) find_library(_veloc_client_lib - #NAMES libveloc.a veloc libveloc-client.so - NAMES libveloc-client.a veloc libveloc-client.so - HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) + NAMES libveloc.a veloc libveloc-client.so libveloc-client.dylib + HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) find_library(_veloc_module_lib - #NAMES libveloc.a veloc libveloc-modules.so - NAMES libveloc-modules.a veloc libveloc-modules.so - HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) + NAMES libveloc.a veloc libveloc-modules.so libveloc-modules.dylib + HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) find_library(_veloc_axl - NAMES libaxl.a axl - HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) + NAMES libaxl.a axl + HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) find_library(_veloc_er - NAMES liber.a er - HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) + NAMES liber.a er + HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) find_library(_veloc_rankstr - NAMES librankstr.a rankstr - HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) + NAMES librankstr.a rankstr + HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) find_library(_veloc_kvtree - NAMES libkvtree.a kvtree - HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) + NAMES libkvtree.a kvtree + HINTS ${_veloc_root}/lib ${_veloc_root}/lib64) find_path(_veloc_include_dir - NAMES veloc.h - HINTS ${_veloc_root}/include) + NAMES veloc.h + HINTS ${_veloc_root}/include) if ((NOT ${_veloc_root}) - OR (NOT ${_veloc_client_lib}) - OR (NOT ${_veloc_module_lib}) - OR (NOT ${_veloc_include_dir})) + OR (NOT ${_veloc_client_lib}) + OR (NOT ${_veloc_module_lib}) + OR (NOT ${_veloc_include_dir})) set(_fail_msg "Could NOT find VeloC (set VeloC_DIR or VeloC_ROOT to point to install)") else() set(_fail_msg "Could NOT find VeloC") @@ -46,61 +44,67 @@ endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(VeloC ${_fail_msg} - _veloc_root - _veloc_client_lib - _veloc_module_lib - _veloc_include_dir - MPI_FOUND - MPI_CXX_FOUND - ) - -if (NOT VELOC_BAREBONE) + _veloc_root + _veloc_client_lib + _veloc_module_lib + _veloc_include_dir + MPI_FOUND + MPI_CXX_FOUND + ) + +if (NOT TARGET veloc::axl) add_library(veloc::axl UNKNOWN IMPORTED) set_target_properties(veloc::axl PROPERTIES - IMPORTED_LOCATION ${_veloc_axl} - ) + IMPORTED_LOCATION ${_veloc_axl} + ) +endif() +if (NOT TARGET veloc::er) add_library(veloc::er UNKNOWN IMPORTED) set_target_properties(veloc::er PROPERTIES - IMPORTED_LOCATION ${_veloc_er} - ) + IMPORTED_LOCATION ${_veloc_er} + ) +endif() +if (NOT TARGET veloc::rankstr) add_library(veloc::rankstr UNKNOWN IMPORTED) set_target_properties(veloc::rankstr PROPERTIES - IMPORTED_LOCATION ${_veloc_rankstr} - ) + IMPORTED_LOCATION ${_veloc_rankstr} + ) +endif() +if (NOT TARGET veloc::kvtree) add_library(veloc::kvtree UNKNOWN IMPORTED) set_target_properties(veloc::kvtree PROPERTIES - IMPORTED_LOCATION ${_veloc_rankstr} - ) + IMPORTED_LOCATION ${_veloc_rankstr} + ) endif() if (NOT TARGET veloc::veloc_modules) add_library(veloc::veloc_modules UNKNOWN IMPORTED) set_target_properties(veloc::veloc_modules PROPERTIES - IMPORTED_LOCATION ${_veloc_module_lib} - ) + IMPORTED_LOCATION ${_veloc_module_lib} + ) endif() if (NOT TARGET veloc::veloc) add_library(veloc::veloc UNKNOWN IMPORTED) set_target_properties(veloc::veloc PROPERTIES - IMPORTED_LOCATION ${_veloc_client_lib} - INTERFACE_INCLUDE_DIRECTORIES ${_veloc_include_dir} - INTERFACE_LINK_LIBRARIES "veloc::veloc_modules;MPI::MPI_CXX" - ) + IMPORTED_LOCATION ${_veloc_client_lib} + INTERFACE_INCLUDE_DIRECTORIES ${_veloc_include_dir} + INTERFACE_LINK_LIBRARIES "veloc::veloc_modules;MPI::MPI_CXX" + ) endif() if (NOT VELOC_BAREBONE) set_target_properties(veloc::veloc PROPERTIES - INTERFACE_LINK_LIBRARIES "veloc::axl;veloc::er;veloc::rankstr" - ) + INTERFACE_LINK_LIBRARIES "veloc::axl;veloc::er;veloc::rankstr" + ) endif() set(VeloC_DIR ${_veloc_root}) mark_as_advanced( - _veloc_library - _veloc_include_dir + _veloc_library + _veloc_include_dir ) diff --git a/src/heatdis/CMakeLists.txt b/src/heatdis/CMakeLists.txt index 4ff14f2..198987a 100644 --- a/src/heatdis/CMakeLists.txt +++ b/src/heatdis/CMakeLists.txt @@ -4,17 +4,9 @@ target_sources(heatdis_resil PRIVATE ) target_sources(heatdis_veloc PRIVATE heatdis.cpp - veloc-main.cpp + veloc_main.cpp ) -target_sources(benchmark_veloc PRIVATE +target_sources(heatdis_synthesis_benchmark PRIVATE heatdis.cpp veloc-synthesis-bench.cpp ) -target_sources(heatdis_restart_resil PRIVATE - heatdis.cpp - restart_main.cpp - ) -target_sources(heatdis_restart_veloc PRIVATE - heatdis.cpp - veloc_restart.cpp - ) diff --git a/src/heatdis/main.cpp b/src/heatdis/main.cpp index df78d81..2b08259 100644 --- a/src/heatdis/main.cpp +++ b/src/heatdis/main.cpp @@ -6,6 +6,11 @@ #include "heatdis.hpp" #include +/* Added to test restart */ +#include +#include +#include + using namespace heatdis; /* @@ -23,6 +28,8 @@ int main(int argc, char *argv[]) { ("n,nsteps", "Number of timesteps", cxxopts::value()->default_value("600")) ("p,precision", "Min precision", cxxopts::value()->default_value("0.00001")) ("c,checkpoint-interval", "Checkpoint interval", cxxopts::value()->default_value("100")) + ("fail", "Fail iteration or negative for no fail", cxxopts::value()->default_value("-1")) + ("fail-rank", "Rank to fail if failing", cxxopts::value()->default_value("0")) ("config", "Config file", cxxopts::value()) ("scale", "Weak or strong scaling", cxxopts::value()) ; @@ -33,6 +40,8 @@ int main(int argc, char *argv[]) { std::size_t nsteps = args["nsteps"].as< std::size_t >(); const auto precision = args["precision"].as< double >(); const auto chk_interval = args["checkpoint-interval"].as< int >(); + const int fail_iter = args["fail"].as< int >(); + const int fail_rank = args["fail-rank"].as< int >(); int strong, str_ret; @@ -66,6 +75,7 @@ int main(int argc, char *argv[]) { /* weak scaling */ M = (int)sqrt((double)(mem_size * 1024.0 * 1024.0 * nbProcs) / (2 * sizeof(double))); // two matrices needed nbLines = (M / nbProcs) + 3; + } else { /* strong scaling */ @@ -80,6 +90,9 @@ int main(int argc, char *argv[]) { memSize = M * nbLines * 2 * sizeof(double) / (1024 * 1024); + // printf("nbProcs: %d\n", nbProcs); + // printf("size of double: %d\n", sizeof(double)); + if (rank == 0) if (!strong) { printf("Local data size is %d x %d = %f MB (%lu).\n", M, nbLines, memSize, mem_size); @@ -92,7 +105,13 @@ int main(int argc, char *argv[]) { printf("Maximum number of iterations : %lu \n", nsteps); wtime = MPI_Wtime(); - int i = 1 + KokkosResilience::latest_version(*ctx, "test_kokkos"); + //int i = 1 + KokkosResilience::latest_version(*ctx, "test_kokkos"); + int i = KokkosResilience::latest_version(*ctx, "test_kokkos"); + int v = i; + printf("i: %d --- v: %d\n", i, v); + if (i < 0) { + i = 0; + } while(i < nsteps) { @@ -113,6 +132,12 @@ int main(int argc, char *argv[]) { break; } i++; + + // if (rank == 0 && i == 301 && v < 0) { + if ((fail_iter >= 0 ) && (rank == fail_rank) && (i == fail_iter) && (v < 0)) { + printf("Killing rank %d at i == %d.\n", rank, i); + MPI_Abort(MPI_COMM_WORLD, 400); + } } if (rank == 0) printf("Execution finished in %lf seconds.\n", MPI_Wtime() - wtime); diff --git a/src/heatdis/restart_main.cpp b/src/heatdis/restart_main.cpp deleted file mode 100644 index a1e026b..0000000 --- a/src/heatdis/restart_main.cpp +++ /dev/null @@ -1,150 +0,0 @@ -#include -#include -#include -#include - -#include "heatdis.hpp" -#include - -/* Added to test restart */ -#include -#include -#include - -using namespace heatdis; - -/* - This sample application is based on the heat distribution code - originally developed within the FTI project: github.com/leobago/fti -*/ - -int main(int argc, char *argv[]) { - int rank, nbProcs, nbLines, M; - double wtime, memSize, localerror, globalerror = 1; - - auto options = cxxopts::Options("heatdis", "Sample heat distribution code"); - options.add_options() - ("s,size", "Problem size", cxxopts::value()->default_value("100")) - ("n,nsteps", "Number of timesteps", cxxopts::value()->default_value("600")) - ("p,precision", "Min precision", cxxopts::value()->default_value("0.00001")) - ("c,checkpoint-interval", "Checkpoint interval", cxxopts::value()->default_value("100")) - ("fail", "Fail iteration or negative for no fail", cxxopts::value()->default_value("301")) - ("fail-rank", "Rank to fail if failing", cxxopts::value()->default_value("0")) - ("config", "Config file", cxxopts::value()) - ("scale", "Weak or strong scaling", cxxopts::value()) - ; - - options.parse_positional({"config"}); - auto args = options.parse(argc, argv); - - std::size_t nsteps = args["nsteps"].as< std::size_t >(); - const auto precision = args["precision"].as< double >(); - const auto chk_interval = args["checkpoint-interval"].as< int >(); - const int fail_iter = args["fail"].as< int >(); - const int fail_rank = args["fail-rank"].as< int >(); - - int strong, str_ret; - - std::string scale; - scale = args["scale"].as< std::string >(); - if (scale == "strong") { - strong = 1; - } else { - strong = 0; - } - - MPI_Init(&argc, &argv); - MPI_Comm_size(MPI_COMM_WORLD, &nbProcs); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - - std::size_t mem_size = args["size"].as< std::size_t >(); - - if (mem_size == 0) { - printf("Wrong memory size! See usage\n"); - exit(3); - } - - Kokkos::initialize(argc, argv); - { - auto ctx = KokkosResilience::make_context( MPI_COMM_WORLD, args["config"].as< std::string >() ); - - const auto filt = KokkosResilience::Filter::NthIterationFilter( chk_interval ); - - if (!strong) { - - /* weak scaling */ - M = (int)sqrt((double)(mem_size * 1024.0 * 1024.0 * nbProcs) / (2 * sizeof(double))); // two matrices needed - nbLines = (M / nbProcs) + 3; - - } else { - - /* strong scaling */ - M = (int)sqrt((double)(mem_size * 1024.0 * 1024.0 * nbProcs) / (2 * sizeof(double) * nbProcs)); // two matrices needed - nbLines = (M / nbProcs) + 3; - } - - Kokkos::View h_view("h", M * nbLines); - Kokkos::View g_view("g", M * nbLines); - - initData(nbLines, M, rank, g_view); - - memSize = M * nbLines * 2 * sizeof(double) / (1024 * 1024); - - // printf("nbProcs: %d\n", nbProcs); - // printf("size of double: %d\n", sizeof(double)); - - if (rank == 0) - if (!strong) { - printf("Local data size is %d x %d = %f MB (%lu).\n", M, nbLines, memSize, mem_size); - } else { - printf("Local data size is %d x %d = %f MB (%lu).\n", M, nbLines, memSize, mem_size / nbProcs); - } - if (rank == 0) - printf("Target precision : %f \n", precision); - if (rank == 0) - printf("Maximum number of iterations : %lu \n", nsteps); - - wtime = MPI_Wtime(); - //int i = 1 + KokkosResilience::latest_version(*ctx, "test_kokkos"); - int i = KokkosResilience::latest_version(*ctx, "test_kokkos"); - int v = i; - printf("i: %d --- v: %d\n", i, v); - if (i < 0) { - i = 0; - } - - while(i < nsteps) { - - KokkosResilience::checkpoint(*ctx, "test_kokkos", i, [&localerror, i, &globalerror, - g_view, h_view, nbProcs, rank, M, nbLines]() { - localerror = doWork(nbProcs, rank, M, nbLines, g_view, h_view); - - if (((i % ITER_OUT) == 0) && (rank == 0)) { - printf("Step : %d, error = %f\n", i, globalerror); - } - if ((i % REDUCED) == 0) { - MPI_Allreduce(&localerror, &globalerror, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); - } - }, filt ); - - if (globalerror < precision) { - printf("PRECISION ERROR\n"); - break; - } - i++; - - // if (rank == 0 && i == 301 && v < 0) { - if ((fail_iter >= 0 ) && (rank == fail_rank) && (i == fail_iter) && (v < 0)) { - printf("Killing rank %d at i == %d.\n", rank, i); - MPI_Abort(MPI_COMM_WORLD, 400); - } - } - if (rank == 0) - printf("Execution finished in %lf seconds.\n", MPI_Wtime() - wtime); - - } - Kokkos::finalize(); - - MPI_Finalize(); - return 0; -} diff --git a/src/heatdis/veloc-main.cpp b/src/heatdis/veloc-main.cpp deleted file mode 100644 index 65a582d..0000000 --- a/src/heatdis/veloc-main.cpp +++ /dev/null @@ -1,149 +0,0 @@ -#include -#include -#include -#include - -#include "heatdis.hpp" - -using namespace heatdis; - -#ifdef HEATDIS_RESILIENCE -std::unique_ptr< KokkosResilience::ContextBase > ctx; -#endif -/* - This sample application is based on the heat distribution code - originally developed within the FTI project: github.com/leobago/fti -*/ - -int main(int argc, char *argv[]) { - int rank, nbProcs, nbLines, M; - double wtime, memSize, localerror, globalerror = 1; - - auto options = cxxopts::Options("heatdis", "Sample heat distribution code"); - options.add_options() - ("s,size", "Problem size", cxxopts::value()->default_value("100")) - ("n,nsteps", "Number of timesteps", cxxopts::value()->default_value("600")) - ("p,precision", "Min precision", cxxopts::value()->default_value("0.00001")) - ("c,checkpoint-interval", "Checkpoint interval", cxxopts::value()->default_value("100")) - ("config", "Config file", cxxopts::value()) - ("scale", "Weak or strong scaling", cxxopts::value()) - ; - - options.parse_positional({"config"}); - auto args = options.parse(argc, argv); - - std::size_t nsteps = args["nsteps"].as< std::size_t >(); - const auto precision = args["precision"].as< double >(); - const auto chk_interval = args["checkpoint-interval"].as< int >(); - - MPI_Init(&argc, &argv); - MPI_Comm_size(MPI_COMM_WORLD, &nbProcs); - MPI_Comm_rank(MPI_COMM_WORLD, &rank); - - std::size_t mem_size = args["size"].as< std::size_t >(); - - int strong, str_ret; - - std::string scale; - scale = args["scale"].as< std::string >(); - if (scale == "strong") { - strong = 1; - } else { - strong = 0; - } - - if (mem_size == 0) { - printf("Wrong memory size! See usage\n"); - exit(3); - } - if (VELOC_Init(MPI_COMM_WORLD, args["config"].as< std::string >().c_str()) != VELOC_SUCCESS) { - printf("Error initializing VELOC! Aborting...\n"); - exit(2); - } - - Kokkos::initialize(argc, argv); - { - - if (!strong) { - - /* weak scaling */ - M = (int)sqrt((double)(mem_size * 1024.0 * 1024.0 * nbProcs) / (2 * sizeof(double))); // two matrices needed - nbLines = (M / nbProcs) + 3; - } else { - - /* strong scaling */ - M = (int)sqrt((double)(mem_size * 1024.0 * 1024.0 * nbProcs) / (2 * sizeof(double) * nbProcs)); // two matrices needed - nbLines = (M / nbProcs) + 3; - } - - Kokkos::View h_view("h", M * nbLines); - Kokkos::View g_view("g", M * nbLines); - - initData(nbLines, M, rank, g_view); - - memSize = M * nbLines * 2 * sizeof(double) / (1024 * 1024); - - if (rank == 0) - if (!strong) { - printf("Local data size is %d x %d = %f MB (%lu).\n", M, nbLines, memSize, mem_size); - } else { - printf("Local data size is %d x %d = %f MB (%lu).\n", M, nbLines, memSize, mem_size / nbProcs); - } - if (rank == 0) - printf("Target precision : %f \n", precision); - if (rank == 0) - printf("Maximum number of iterations : %lu \n", nsteps); - - int i; - VELOC_Mem_protect(0, &i, 1, sizeof(int)); - VELOC_Mem_protect(1, h_view.data(), M * nbLines, sizeof(double)); - VELOC_Mem_protect(2, g_view.data(), M * nbLines, sizeof(double)); - - wtime = MPI_Wtime(); - int v = VELOC_Restart_test("heatdis", 0); - if (v > 0) { - printf("Previous checkpoint found at iteration %d, initiating restart...\n", v); - // v can be any version, independent of what VELOC_Restart_test is returning - assert(VELOC_Restart("heatdis", v) == VELOC_SUCCESS); - } else { - i = 0; - } - - while(i < nsteps) { - localerror = doWork(nbProcs, rank, M, nbLines, g_view, h_view); - - if (((i % ITER_OUT) == 0) && (rank == 0)) { - printf("Step : %d, error = %f\n", i, globalerror); - } - if ((i % REDUCED) == 0) { - MPI_Allreduce(&localerror, &globalerror, 1, MPI_DOUBLE, MPI_MAX, MPI_COMM_WORLD); - } - - if (globalerror < precision) { - printf("PRECISION ERROR\n"); - break; - } - - /* Iterate after checkpoint - need to checkpoint at 0 to be consistent - * with Resilient Kokkos - */ - //i++; - - if (!(i % chk_interval) && (i != nsteps)) { - assert(VELOC_Checkpoint("heatdis", i) == VELOC_SUCCESS); - if (rank == 0) { - printf("checkpoint rank: %d ---- i: %d\n", rank, i); - } - } - i++; - } - if (rank == 0) - printf("Execution finished in %lf seconds.\n", MPI_Wtime() - wtime); - - } - Kokkos::finalize(); - - VELOC_Finalize(0); // no clean up - MPI_Finalize(); - return 0; -} diff --git a/src/heatdis/veloc-synthesis-bench.cpp b/src/heatdis/veloc-synthesis-bench.cpp index 9f7bd06..6593935 100644 --- a/src/heatdis/veloc-synthesis-bench.cpp +++ b/src/heatdis/veloc-synthesis-bench.cpp @@ -104,7 +104,7 @@ int main(int argc, char *argv[]) { int i; VELOC_Mem_protect(0, &i, 1, sizeof(int)); - for( int jj = 0 jj < num_views; ++jj ) + for( int jj = 0; jj < num_views; ++jj ) { VELOC_Mem_protect(jj+1, MyViews[jj].data(), M * nbLines, sizeof(double)); } diff --git a/src/heatdis/veloc_restart.cpp b/src/heatdis/veloc_main.cpp similarity index 99% rename from src/heatdis/veloc_restart.cpp rename to src/heatdis/veloc_main.cpp index a1cc437..e998b80 100644 --- a/src/heatdis/veloc_restart.cpp +++ b/src/heatdis/veloc_main.cpp @@ -25,7 +25,7 @@ int main(int argc, char *argv[]) { ("n,nsteps", "Number of timesteps", cxxopts::value()->default_value("600")) ("p,precision", "Min precision", cxxopts::value()->default_value("0.00001")) ("c,checkpoint-interval", "Checkpoint interval", cxxopts::value()->default_value("100")) - ("fail", "Fail iteration or negative for no fail", cxxopts::value()->default_value("301")) + ("fail", "Fail iteration or negative for no fail", cxxopts::value()->default_value("-1")) ("fail-rank", "Rank to fail if failing", cxxopts::value()->default_value("0")) ("config", "Config file", cxxopts::value()) ("scale", "Weak or strong scaling", cxxopts::value()) diff --git a/tpl/CMakeLists.txt b/tpl/CMakeLists.txt index bd68c4d..1332784 100644 --- a/tpl/CMakeLists.txt +++ b/tpl/CMakeLists.txt @@ -1,5 +1,4 @@ # https://github.com/jarro2783/cxxopts target_include_directories(heatdis_resil PRIVATE ${CMAKE_CURRENT_LIST_DIR}) target_include_directories(heatdis_veloc PRIVATE ${CMAKE_CURRENT_LIST_DIR}) -target_include_directories(heatdis_restart_resil PRIVATE ${CMAKE_CURRENT_LIST_DIR}) -target_include_directories(heatdis_restart_veloc PRIVATE ${CMAKE_CURRENT_LIST_DIR}) +target_include_directories(heatdis_synthesis_benchmark PRIVATE ${CMAKE_CURRENT_LIST_DIR})