Re: [hpx-users] primary_namespace::resolve_grid
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
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
> 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