Chris,

> Apologies that the sample I submitted was grossly inaccurate. I'll be more
> thorough in the future with code samples (instead of shooting from the
> hip). Thank you for the update - I've been using the official version
> 1.0.0 with MPI parcelport. I'll be updating my runtime system build soon!

Thanks for this information. Please let us know if this solves your problem.

Regards Hartmut
---------------
http://boost-spirit.com
http://stellar.cct.lsu.edu

> 
> V/r,
> Chris
> 
> 
> On Tue, May 23, 2017 at 7:37 PM, Hartmut Kaiser <hartmut.kai...@gmail.com>
> wrote:
> > Ran into an issue where an HPX action that I've been executing under
> > hpx::parallel::transform (in lieu of hpx::parallel::for_each) hangs on
> the
> > hpx::finalize() call. Are there any troubleshooting or debugging
> > techniques that could be used to figure out how to resolve this issue?
> I'm
> > using 1.0.0.
> > static void run(const size_t idx) {
> >   hpx::cout << idx << hpx::endl;
> > }
> > HPX_PLAIN_ACTION(run, run_action);
> > int hpx_main(int argc, char **argv) {
> > std::vector<size_t> idx_list;
> > // fill idx_list with numbers to print ...
> >
> > std::vector< hpx::future<void> > futures;
> > futures.reserve(idx_list.size());
> > hpx::parallel::transform(
> >   hpx::parallel::par,
> >   std::begin(idx_list),
> >   std::end(idx_list),
> >   [&localities, &distarr] (idx) {
> >     auto loc = localities[distarr.get_partition(idx)];
> >     return hpx::async<run_action>(loc, idx);
> >   });
> > hpx::wait_all(futures);
> > // printing debug statements after the hpx::wait_all demonstrate the
> > hpx::wait_all has completed successfully
> >
> > hpx::finalize();
> >
> > }
> >From what I can see you actually never store the futures returned from
> async<run_action>() in to the 'futures' vector.
> 
> Also, I'm surprised this code even compiles as the lambda returns a
> future<void> which transform will attempt to assign to the current element
> (which is a size_t).
> 
> I'd assume the actual code you're running looks like:
> 
> int hpx_main(int argc, char **argv) {
>   std::vector<size_t> idx_list;
>   // fill idx_list with numbers to print ...
> 
>   std::vector< hpx::future<void> > futures(idx_list.size());
>   futures.reserve(idx_list.size());
> 
>   hpx::parallel::transform(
>     hpx::parallel::par,
>     std::begin(idx_list),
>     std::end(idx_list),
>     std::begin(futures), // <-- is this missing above?
>     [&localities, &distarr] (idx) {
>       auto loc = localities[distarr.get_partition(idx)];
>       return hpx::async<run_action>(loc, idx);
>     });
>   hpx::wait_all(futures);
> 
>   return hpx::finalize();
> }
> 
> In which case I wouldn't see any problems with the code :/ Can you show me
> the full code, please (feel free to send it to me privately, if you don't
> want to share it on the list).
> 
> Hold on - there is an idea. We just fixed a shutdown problem (hang) which
> was occurring under certain circumstances (see https://github.com/STEllAR-
> GROUP/hpx/commit/ab353f656a08f3426224b4e86fa9715a52afd8ec), that was about
> 10 days ago. What version of HPX do you use?
> 
> Regards Hartmut
> ---------------
> http://boost-spirit.com
> http://stellar.cct.lsu.edu
> 
> 
> _______________________________________________
> hpx-users mailing list
> hpx-users@stellar.cct.lsu.edu
> https://mail.cct.lsu.edu/mailman/listinfo/hpx-users


_______________________________________________
hpx-users mailing list
hpx-users@stellar.cct.lsu.edu
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users

Reply via email to