int main()
{
    using vector_type
        = hpx::partitioned_vector<double>;

    const std::size_t size_x = 32;
    const std::size_t size_y = 4;
    const std::size_t size_z = hpx::get_num_localities(hpx::launch::sync);

    const std::size_t elt_size = 4;
    const std::size_t num_partitions  = size_x*size_y*size_z;

    std::size_t raw_size = num_partitions*elt_size;

    vector_type my_vector(raw_size,
        hpx::container_layout( num_partitions, hpx::find_all_localities() ));

    std::string vec_name("my_vector");
    my_vector.register_as(hpx::launch::sync, vec_name);

    hpx::future<void> join =
        hpx::lcos::define_spmd_block("block", 4, bulk_test_action(),
            size_x, size_y, size_z, elt_size, vec_name);

    join.get();

    return 0;
}
int main()
{
    using vector_type = hpx::partitioned_vector<double>;

    const std::size_t height = 16;
    const std::size_t width = 16;

    std::size_t local_height = 16;
    std::size_t local_width = 16;
    std::size_t local_leading_dimension = local_height;

    std::size_t raw_size = (height * width) * (local_height * local_width);

    auto layout =
        hpx::container_layout(height * width, hpx::find_all_localities());

    // Vector instantiations for test 1
    vector_type in1(raw_size, layout);
    vector_type out1(raw_size, layout);

    std::string in1_name("in1");
    std::string out1_name("out1");

    in1.register_as(hpx::launch::sync, in1_name);
    out1.register_as(hpx::launch::sync, out1_name);

    // Vector instantiations for test 2
    vector_type in2(raw_size, layout);
    vector_type out2(raw_size, layout);

    std::string in2_name("in2");
    std::string out2_name("out2");

    in2.register_as(hpx::launch::sync, in2_name);
    out2.register_as(hpx::launch::sync, out2_name);

    // Launch tests
    hpx::future<void> join1 = hpx::lcos::define_spmd_block("block1", 4,
        bulk_test_action(), height, width, local_height, local_width,
        local_leading_dimension, in1_name, out1_name);

    hpx::future<void> join2 = hpx::lcos::define_spmd_block("block2", 4,
        async_bulk_test_action(), height, width, local_height, local_width,
        local_leading_dimension, in2_name, out2_name);

    hpx::wait_all(join1, join2);

    return 0;
}