Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test execution of examples in the CI. #642

Merged
merged 6 commits into from
Oct 1, 2020
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Add example targets and add better defaults as possible,
  • Loading branch information
pratikvn committed Oct 1, 2020
commit 70ebd49878c975c43652b01a4ab80ce51c1567cc
46 changes: 24 additions & 22 deletions examples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,25 +1,27 @@
option(GINKGO_BUILD_EXTLIB_EXAMPLE "Build the external-lib-interfacing with deal.II, you need to link the deal.II library." OFF)
add_subdirectory(custom-logger)
add_subdirectory(custom-matrix-format)
add_subdirectory(custom-stopping-criterion)
option(GINKGO_RUN_EXAMPLES "Run the examples." OFF)
pratikvn marked this conversation as resolved.
Show resolved Hide resolved

function(setup_example_target target_name)
add_executable(${target_name} ${target_name}.cpp)
target_link_libraries(${target_name} ginkgo)
target_include_directories(${target_name} PRIVATE ${PROJECT_SOURCE_DIR})
endfunction()


set(EXAMPLES_LIST "custom-logger;custom-matrix-format;custom-stopping-criterion;adaptiveprecision-blockjacobi;ginkgo-overhead;ginkgo-ranges;ilu-preconditioned-solver;ir-ilu-preconditioned-solver;inverse-iteration;iterative-refinement;minimal-cuda-solver;mixed-precision-ir;nine-pt-stencil-solver;papi-logging;performance-debugging;poisson-solver;preconditioned-solver;preconditioner-export;simple-solver;simple-solver-logging;three-pt-stencil-solver;")
if(GINKGO_BUILD_EXTLIB_EXAMPLE)
add_subdirectory(external-lib-interfacing)
set(EXAMPLES_LIST "${EXAMPLES_LIST};external-lib-interfacing")
pratikvn marked this conversation as resolved.
Show resolved Hide resolved
endif()

foreach(example ${EXAMPLES_LIST})
add_subdirectory(${example})
endforeach()

set(run_list "")
if(GINKGO_RUN_EXAMPLES)
foreach(example ${EXAMPLES_LIST})
add_custom_target("run-${example}"
COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${example}/${example} > ${CMAKE_CURRENT_BINARY_DIR}/${example}/${example}.out
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${example})
endforeach()
endif()
add_subdirectory(adaptiveprecision-blockjacobi)
add_subdirectory(ginkgo-overhead)
add_subdirectory(ginkgo-ranges)
add_subdirectory(ilu-preconditioned-solver)
add_subdirectory(ir-ilu-preconditioned-solver)
add_subdirectory(inverse-iteration)
add_subdirectory(iterative-refinement)
add_subdirectory(minimal-cuda-solver)
add_subdirectory(mixed-precision-ir)
add_subdirectory(nine-pt-stencil-solver)
add_subdirectory(papi-logging)
add_subdirectory(performance-debugging)
add_subdirectory(poisson-solver)
add_subdirectory(preconditioned-solver)
add_subdirectory(preconditioner-export)
add_subdirectory(simple-solver)
add_subdirectory(simple-solver-logging)
add_subdirectory(three-pt-stencil-solver)
4 changes: 1 addition & 3 deletions examples/adaptiveprecision-blockjacobi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(adaptiveprecision-blockjacobi adaptiveprecision-blockjacobi.cpp)
target_link_libraries(adaptiveprecision-blockjacobi ginkgo)
target_include_directories(adaptiveprecision-blockjacobi PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("adaptiveprecision-blockjacobi")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/custom-logger/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
add_executable(custom-logger custom-logger.cpp)
target_link_libraries(custom-logger ginkgo)
target_include_directories(custom-logger PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("custom-logger")
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
configure_file(data/x0.mtx data/x0.mtx COPYONLY)
11 changes: 6 additions & 5 deletions examples/custom-matrix-format/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ if (GINKGO_BUILD_CUDA AND GINKGO_BUILD_OMP)
enable_language(CUDA)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
add_executable(custom-matrix-format
custom-matrix-format.cpp
set(run_target "custom-matrix-format")
add_executable(${run_target}
${run_target}.cpp
stencil_kernel.cu)
target_link_libraries(custom-matrix-format ginkgo)
target_include_directories(custom-matrix-format PRIVATE
target_link_libraries(${run_target} ginkgo)
target_include_directories(${run_target} PRIVATE
${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
# workaround for clang-cuda/g++ interaction
set_target_properties(custom-matrix-format PROPERTIES POSITION_INDEPENDENT_CODE ON)
set_target_properties(${run_target} PROPERTIES POSITION_INDEPENDENT_CODE ON)
endif()
9 changes: 5 additions & 4 deletions examples/custom-stopping-criterion/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
set(run_target "custom-stopping-criterion")
set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)
add_executable(custom-stopping-criterion
custom-stopping-criterion.cpp)
target_link_libraries(custom-stopping-criterion ginkgo
add_executable(${run_target}
${run_target}.cpp)
target_link_libraries(${run_target} ginkgo
Threads::Threads)
target_include_directories(custom-stopping-criterion
target_include_directories(${run_target}
PRIVATE ${PROJECT_SOURCE_DIR})
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
Expand Down
3 changes: 2 additions & 1 deletion examples/external-lib-interfacing/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@ if(GINKGO_BUILD_EXTLIB_EXAMPLE)
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)


set(run_target "external-lib-interfacing")
add_executable(${PROJECT_NAME} "")
target_sources(${PROJECT_NAME} PRIVATE external-lib-interfacing.cpp)
target_sources(${PROJECT_NAME} PRIVATE ${run_target}.cpp)
target_compile_options(${PROJECT_NAME} PRIVATE -g -Wall)
target_compile_definitions(${PROJECT_NAME} PRIVATE OMPI_SKIP_MPICXX)

Expand Down
4 changes: 1 addition & 3 deletions examples/ginkgo-overhead/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
add_executable(ginkgo-overhead ginkgo-overhead.cpp)
target_link_libraries(ginkgo-overhead ginkgo)
target_include_directories(ginkgo-overhead PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("ginkgo-overhead")
4 changes: 1 addition & 3 deletions examples/ginkgo-ranges/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
add_executable(ginkgo-ranges ginkgo-ranges.cpp)
target_link_libraries(ginkgo-ranges ginkgo)
target_include_directories(ginkgo-ranges PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("ginkgo-ranges")
4 changes: 1 addition & 3 deletions examples/ilu-preconditioned-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
add_executable(ilu-preconditioned-solver ilu-preconditioned-solver.cpp)
target_link_libraries(ilu-preconditioned-solver ginkgo)
target_include_directories(ilu-preconditioned-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("ilu-preconditioned-solver")
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
configure_file(data/x0.mtx data/x0.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/inverse-iteration/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(inverse-iteration inverse-iteration.cpp)
target_link_libraries(inverse-iteration ginkgo)
target_include_directories(inverse-iteration PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("inverse-iteration")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/ir-ilu-preconditioned-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(ir-ilu-preconditioned-solver ir-ilu-preconditioned-solver.cpp)
target_link_libraries(ir-ilu-preconditioned-solver ginkgo)
target_include_directories(ir-ilu-preconditioned-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("ir-ilu-preconditioned-solver")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/iterative-refinement/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(iterative-refinement iterative-refinement.cpp)
target_link_libraries(iterative-refinement ginkgo)
target_include_directories(iterative-refinement PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("iterative-refinement")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/minimal-cuda-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
add_executable(minimal-cuda-solver minimal-cuda-solver.cpp)
target_link_libraries(minimal-cuda-solver ginkgo)
target_include_directories(minimal-cuda-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("minimal-cuda-solver")
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
configure_file(data/x0.mtx data/x0.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/mixed-precision-ir/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(mixed-precision-ir mixed-precision-ir.cpp)
target_link_libraries(mixed-precision-ir ginkgo)
target_include_directories(mixed-precision-ir PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("mixed-precision-ir")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/nine-pt-stencil-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
add_executable(nine-pt-stencil-solver nine-pt-stencil-solver.cpp)
target_link_libraries(nine-pt-stencil-solver ginkgo)
target_include_directories(nine-pt-stencil-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("nine-pt-stencil-solver")
6 changes: 3 additions & 3 deletions examples/nine-pt-stencil-solver/nine-pt-stencil-solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,10 +295,9 @@ void solve_system(const std::string &executor_string,
int main(int argc, char *argv[])
{
if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " DISCRETIZATION_POINTS [executor]"
std::cout << "Usage: " << argv[0] << " DISCRETIZATION_POINTS [executor]"
<< " [stencil_alpha] [stencil_beta] [stencil_gamma]"
<< std::endl;
std::exit(-1);
}
using ValueType = double;
using IndexType = int;
Expand Down Expand Up @@ -354,7 +353,8 @@ int main(int argc, char *argv[])
.count()) *
1e-6;

print_solution(dp, u.data());
// Uncomment to print the solution
// print_solution(dp, u.data());
std::cout << "The average relative error is "
<< calculate_error(dp, u.data(), correct_u) /
static_cast<gko::remove_complex<ValueType>>(dp_2)
Expand Down
4 changes: 1 addition & 3 deletions examples/performance-debugging/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(performance-debugging performance-debugging.cpp)
target_link_libraries(performance-debugging ginkgo)
target_include_directories(performance-debugging PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("performance-debugging")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/poisson-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
add_executable(poisson-solver poisson-solver.cpp)
target_link_libraries(poisson-solver ginkgo)
target_include_directories(poisson-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("poisson-solver")
6 changes: 3 additions & 3 deletions examples/poisson-solver/poisson-solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -123,9 +123,8 @@ int main(int argc, char *argv[])
using bj = gko::preconditioner::Jacobi<ValueType, IndexType>;

if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " DISCRETIZATION_POINTS [executor]"
std::cout << "Usage: " << argv[0] << " DISCRETIZATION_POINTS [executor]"
<< std::endl;
std::exit(-1);
}

// Get number of discretization points
Expand Down Expand Up @@ -185,7 +184,8 @@ int main(int argc, char *argv[])
->generate(clone(exec, matrix)) // copy the matrix to the executor
->apply(lend(rhs), lend(u));

print_solution<ValueType>(u0, u1, lend(u));
// Uncomment to print the solution
// print_solution<ValueType>(u0, u1, lend(u));
std::cout << "The average relative error is "
<< calculate_error(discretization_points, lend(u), correct_u) /
static_cast<gko::remove_complex<ValueType>>(
Expand Down
4 changes: 1 addition & 3 deletions examples/preconditioned-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
add_executable(preconditioned-solver preconditioned-solver.cpp)
target_link_libraries(preconditioned-solver ginkgo)
target_include_directories(preconditioned-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("preconditioned-solver")
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
configure_file(data/x0.mtx data/x0.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/preconditioner-export/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,2 @@
add_executable(preconditioner-export preconditioner-export.cpp)
target_link_libraries(preconditioner-export ginkgo)
target_include_directories(preconditioner-export PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("preconditioner-export")
configure_file(data/A.mtx data/A.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/simple-solver-logging/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
add_executable(simple-solver-logging simple-solver-logging.cpp)
target_link_libraries(simple-solver-logging ginkgo)
target_include_directories(simple-solver-logging PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("simple-solver-logging")
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
configure_file(data/x0.mtx data/x0.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/simple-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
add_executable(simple-solver simple-solver.cpp)
target_link_libraries(simple-solver ginkgo)
target_include_directories(simple-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("simple-solver")
configure_file(data/A.mtx data/A.mtx COPYONLY)
configure_file(data/b.mtx data/b.mtx COPYONLY)
configure_file(data/x0.mtx data/x0.mtx COPYONLY)
4 changes: 1 addition & 3 deletions examples/three-pt-stencil-solver/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
add_executable(three-pt-stencil-solver three-pt-stencil-solver.cpp)
target_link_libraries(three-pt-stencil-solver ginkgo)
target_include_directories(three-pt-stencil-solver PRIVATE ${PROJECT_SOURCE_DIR})
setup_example_target("three-pt-stencil-solver")
7 changes: 4 additions & 3 deletions examples/three-pt-stencil-solver/three-pt-stencil-solver.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -233,9 +233,8 @@ int main(int argc, char *argv[])
using IndexType = int;

if (argc < 2) {
std::cerr << "Usage: " << argv[0] << " DISCRETIZATION_POINTS [executor]"
std::cout << "Usage: " << argv[0] << " DISCRETIZATION_POINTS [executor]"
<< std::endl;
std::exit(-1);
}

const IndexType discretization_points =
Expand Down Expand Up @@ -267,7 +266,9 @@ int main(int argc, char *argv[])
col_idxs.data(), values.data(), rhs.data(), u.data(),
reduction_factor);

print_solution<ValueType, IndexType>(discretization_points, 0, 1, u.data());
// Uncomment to print the solution
// print_solution<ValueType, IndexType>(discretization_points, 0, 1,
// u.data());
std::cout << "The average relative error is "
<< calculate_error(discretization_points, u.data(), correct_u) /
discretization_points
Expand Down