Skip to content
Snippets Groups Projects
Commit 6ac6738e authored by Sebastian Eibl's avatar Sebastian Eibl
Browse files

simplified targets example

parent a181b36c
Branches
No related tags found
No related merge requests found
......@@ -14,6 +14,7 @@ check-recipes:
script:
- cmake -S 00_targets -B 00_build
- cmake --build 00_build
- 00_build/calculator
- export MKL_ROOT=$INTEL_HOME/mkl/latest
- cmake -S 01_third_party_libraries -B 01_build
......
......@@ -6,16 +6,16 @@ project(00_targets
##########################
# LIBRARY
##########################
add_library(Integrator SHARED)
target_sources(Integrator PRIVATE integrator/mc_pi.hpp integrator/mc_pi.cpp)
target_include_directories(Integrator PUBLIC .)
target_compile_definitions(Integrator PRIVATE FOO)
target_compile_options(Integrator PRIVATE -Wall -Wextra)
add_library(Math SHARED)
target_sources(Math PRIVATE math/add.hpp math/add.cpp)
target_include_directories(Math PUBLIC math)
target_compile_definitions(Math PRIVATE FOO)
target_compile_options(Math PRIVATE -Wall -Wextra)
##########################
# EXECUTABLE
##########################
add_executable(calc_pi)
target_sources(calc_pi PRIVATE app/main.cpp)
target_link_libraries(calc_pi PRIVATE Integrator)
add_executable(calculator)
target_sources(calculator PRIVATE app/main.cpp)
target_link_libraries(calculator PRIVATE Math)
#include <integrator/mc_pi.hpp>
#include <add.hpp>
#include <iostream>
int main(int argc, char** argv)
int main(int /*argc*/, char** /*argv*/)
{
if (argc != 2) exit(EXIT_FAILURE);
std::cout << calcPI(std::stoll(argv[1])) << std::endl;
std::cout << add(2, 3) << std::endl;
exit(EXIT_SUCCESS);
}
#include "mc_pi.hpp"
#include <random>
double calcPI(const int64_t shots)
{
int64_t hits = 0;
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0,1);
#pragma omp parallel for firstprivate(distribution, generator, shots) default(none) reduction(+ : hits)
for (auto i = 0; i < shots; ++i)
{
double x = distribution(generator);
double y = distribution(generator);
double r2 = x * x + y * y;
if (r2 < 1.0)
{
++hits;
}
}
return 4.0 * static_cast<double>(hits) / static_cast<double>(shots);
}
#pragma once
#include <cstdint>
double calcPI(const int64_t shots);
#include "add.hpp"
int add(const int lhs, const int rhs) { return lhs + rhs; }
\ No newline at end of file
#pragma once
int add(const int lhs, const int rhs);
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment