Skip to content
Snippets Groups Projects
Commit 77fcd70d authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Initial Kokkos usage.

parent e677e75b
Branches
Tags v0.0.1
No related merge requests found
......@@ -25,4 +25,11 @@ if (${CMAKE_BINARY_DIR} MATCHES "^${CMAKE_SOURCE_DIR}")
endif()
project (Pastis)
list(APPEND CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -O3)
add_subdirectory(${CMAKE_SOURCE_DIR}/packages/kokkos)
include_directories(${Kokkos_INCLUDE_DIRS_RET})
add_executable(pastis main.cpp)
target_link_libraries(pastis kokkos)
#include <iostream>
#include <Kokkos_Core.hpp>
int main(int argc, char **argv)
int main(int argc, char *argv[])
{
std::cout << "It's pastis time!\n";
return 0;
std::cout << "-----------------\n";
Kokkos::initialize(argc, argv);
Kokkos::DefaultExecutionSpace::print_configuration(std::cout);
if (argc < 2) {
fprintf(stderr, "Usage: %s [<kokkos_options>] <size>\n", argv[0]);
Kokkos::finalize();
exit(1);
}
const long n = strtol(argv[1], NULL, 10);
std::cout << "Number of even integers from 0 to " << n - 1 << '\n';
Kokkos::Timer timer;
timer.reset();
// Compute the number of even integers from 0 to n-1, in parallel.
long count = 0;
Kokkos::parallel_reduce(n, KOKKOS_LAMBDA (const long i, long& lcount) {
lcount += (i % 2) == 0;
}, count);
double count_time = timer.seconds();
std::cout << " Parallel: " << count << " " << count_time << '\n';
timer.reset();
// Compare to a sequential loop.
long seq_count = 0;
for (long i = 0; i < n; ++i) {
seq_count += (i % 2) == 0;
}
count_time = timer.seconds();
std::cout << "Sequential: " << seq_count << ' ' << count_time << '\n';
Kokkos::finalize();
return (count == seq_count) ? 0 : -1;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment