Skip to content

Instantly share code, notes, and snippets.

@folshost
Created April 11, 2019 20:31
Show Gist options
  • Save folshost/369bcc5d58c4f8dd45755e3289380381 to your computer and use it in GitHub Desktop.
Save folshost/369bcc5d58c4f8dd45755e3289380381 to your computer and use it in GitHub Desktop.
// Copyright (c) 2019 Weile Wei
// Copyright (c) 2019 Maxwell Reeser
// Copyright (c) 2019 Hartmut Kaiser
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#include <hpx/hpx.hpp>
#include <hpx/hpx_init.hpp>
#include <hpx/include/iostreams.hpp>
#include <hpx/lcos/barrier.hpp>
#include <hpx/runtime/components/component_factory.hpp>
void run_barrier_test(std::vector<size_t> locs)
{
if (std::find(locs.begin(), locs.end(), hpx::get_locality_id()) == locs.end())
return;
std::string barrier_name = "/loc_list/barrier" + std::to_string(locs[0]) + std::to_string(locs[1]);
std::cout << "\thpx::get_locality_id() = " << hpx::get_locality_id() << std::endl;
std::cout << "\tBefore the barrier named " << barrier_name << " locs.size() = " << locs.size() << std::endl;
std::cout << "\thpx::get_locality_id() = " << hpx::get_locality_id() << std::endl;
hpx::lcos::barrier b(barrier_name, locs.size(), hpx::get_locality_id());
std::cout << "\tAfter barrier creation" << std::endl;
b.wait();
std::cout << "\tAfter the barrier" << std::endl;
}
int hpx_main() {
std::cout << "Hello world from locality " << hpx::get_locality_id() << std::endl;
std::vector<size_t> locs_0{ 0, 1 };
run_barrier_test(locs_0);
std::cout << "Barrier one finished " << std::endl;
std::vector<size_t> locs_1{ 0,2 };
run_barrier_test(locs_1);
std::cout << "Barrier two finished " << std::endl;
std::vector<size_t> locs_2{ 1,2 };
run_barrier_test(locs_2);
std::cout << "Barrier three finished " << std::endl;
return hpx::finalize();
}
int main(int argc, char *argv[]) { return hpx::init(argc, argv); }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment