Re: [hpx-users] primary_namespace::resolve_grid

2017-05-23 Thread ct clmsn
Hartmut,

The code related to this error was derived from the sequential, recursive,
dataflow code from the last week. It sounds like a reasonable
generalization to some of these issues relates to variables going out of
scope (that's a great answer to the question!). I'll be modifying the test
and will send over the modified test to if there's still an issue.

Chris

On Sun, May 21, 2017 at 6:49 AM, Hartmut Kaiser 
wrote:

> Chris,
>
> Sorry for the late reply.
>
> > I've an application that is running a dataflow of asynchronous functions
> > over a linear sequence of doubles stored in a partitioned_vector.
> >
> > The application processes a fair number of elements before causing a
> > segmentation fault. Upon inspection of the core file, the segmentation
> > fault is happening when
> > hpx::agas::server::primary_namespace::resolve_gid(hpx::naming::gid_type)
> > () from libhpx.so.1 is called by the runtime.
> > I've compiled the HPX runtime using the MPI ParcelPort. The application
> is
> > running on a single remote node (using slurm for scheduling).
> > Any suggestions or recommendations of how to further debug the
> application
> > or any runtime flags to help further diagnose implementation errors would
> > be appreciated.
>
> That is very difficult to diagnose from the distance. It looks like that
> something went out of scope too early and an attempt to access it went
> hiwire. Can you give us the code to have a closer look?
>
> 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


[hpx-users] hpx::finalize hanging

2017-05-23 Thread ct clmsn
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 idx_list;

// fill idx_list with numbers to print ...

std::vector< hpx::future > 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(loc, idx);
  });

hpx::wait_all(futures);

// printing debug statements after the hpx::wait_all demonstrate the
hpx::wait_all has completed successfully

hpx::finalize();

}


Any help or some pointers/tips would be greatly appreciated!

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


Re: [hpx-users] hpx::finalize hanging

2017-05-23 Thread Hartmut Kaiser
> 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 idx_list;
> // fill idx_list with numbers to print ...
> 
> std::vector< hpx::future > 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(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() in to the 'futures' vector. 

Also, I'm surprised this code even compiles as the lambda returns a 
future 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 idx_list;
  // fill idx_list with numbers to print ...
 
  std::vector< hpx::future > futures;
  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(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